%!PS-Adobe-3.0
%%Creator: groff version 1.08
%%DocumentNeededResources: font Times-Bold
%%+ font Times-Italic
%%+ font Times-Roman
%%+ font Courier
%%+ font Symbol
%%DocumentSuppliedResources: procset grops 1.08 0
%%Pages: 13
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
%%BeginResource: procset grops 1.08 0
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll 
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}bind def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/FL{
currentgray exch setgray fill setgray
}bind def
/BL/fill load def
/LW/setlinewidth load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
}bind def
/PEND{
clear
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
%%IncludeResource: font Times-Roman
%%IncludeResource: font Courier
%%IncludeResource: font Symbol
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL
792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron
/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space
/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft
/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four
/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C
/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash
/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q
/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase
/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger
/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus
/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu
/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright
/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde
/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute
/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute
/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve
/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
/udieresis/yacute/thorn/ydieresis]def/Courier@0 ENC0/Courier RE/Times-Roman@0
ENC0/Times-Roman RE/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0
/Times-Bold RE
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 12/Times-Bold@0 SF(Bash, the Bour)210.99 123 Q(ne\255Again Shell)-.18 E/F1
10/Times-Italic@0 SF(Chet Rame)263.85 147 Q(y)-.3 E(Case W)221.72 159 Q
(estern Reserve Univer)-.92 E(sity)-.1 E -.15(ch)250.425 171 S(et@po.cwru.edu)
.15 E(ABSTRA)264.535 213 Q(CT)-.3 E/F2 10/Times-Roman@0 SF .019(An o)133 237 R
-.15(ve)-.15 G(rvie).15 E 2.519(wo)-.25 G 2.519(f/)191.918 237 S .018
(bin/sh\255compatible shells is presented, as well as an introduction to)
200.547 237 R .128(the POSIX.2 shell and tools standard.)108 249 R .128
(These serv)5.128 F 2.628(ea)-.15 G 2.628(sa)318.562 249 S 2.628(ni)329.52 249
S .128(ntroduction to bash.)339.928 249 R 2.628(Ac)5.128 G(ompar)439.32 249 Q
(-)-.2 E .188(ison of bash to sh and ksh is presented, as well as a discussion\
 of features unique to bash.)108 261 R(Finally)108 273 Q 3.178(,s)-.65 G .678
(ome of the changes and ne)145.258 273 R 3.178(wf)-.25 G .678
(eatures to appear in the ne)268.486 273 R .678(xt bash release will be)-.15 F
(discussed.)108 285 Q/F3 10/Times-Bold@0 SF 2.5(1. Intr)72 321 R(oduction)-.18
E(Bash)97 336.6 Q F2 .904(is the shell, or command language interpreter)3.404 F
3.404(,t)-.4 G .904(hat will appear in the GNU operating system.)316.032 336.6
R .782(The name is an acron)72 348.6 R .782(ym for the `)-.15 F(`Bourne\255Ag)
-.74 E .782(ain SHell')-.05 F .782(', a pun on Ste)-.74 F 1.082 -.15(ve B)-.25
H .783(ourne, the author of the direct).15 F .212(ancestor of the current)72
360.6 R/F4 9/Times-Roman@0 SF(UNIX)2.712 E F2 2.712<8773>C(hell)199.131 360.6 Q
F1(/bin/sh)2.712 E F2 2.712(,w)C .212(hich appeared in the Se)256.505 360.6 R
-.15(ve)-.25 G .211(nth Edition Bell Labs Research v).15 F(er)-.15 E(-)-.2 E
(sion of)72 372.6 Q F4(UNIX)2.5 E F2([1].).833 E .191(Bash is an)97 388.2 R F3
(sh)2.691 E F2 .192
(\255compatible shell that incorporates useful features from the K)B .192
(orn shell \()-.35 F F3(ksh)A F2 .833(\)[)C .192(2] and the)-.833 F 2.767(Cs)72
400.2 S .267(hell \()85.327 400.2 R F3(csh)A F2 .833(\)[)C .267
(3], described later in this article.)-.833 F .266
(It is ultimately intended to be a conformant implementation)5.267 F 1.965
(of the IEEE POSIX Shell and T)72 412.2 R 1.966(ools speci\214cation \(IEEE W)
-.8 F 1.966(orking Group 1003.2\).)-.8 F 1.966(It of)6.966 F 1.966
(fers functional)-.25 F(impro)72 424.2 Q -.15(ve)-.15 G(ments o).15 E -.15(ve)
-.15 G 2.5(rs).15 G 2.5(hf)155.28 424.2 S(or both interacti)166.11 424.2 Q .3
-.15(ve a)-.25 H(nd programming use.).15 E .802
(While the GNU operating system will most lik)97 439.8 R .801(ely include a v)
-.1 F .801(ersion of the Berk)-.15 F(ele)-.1 E 3.301(ys)-.15 G .801
(hell csh, bash)448.238 439.8 R .108(will be the def)72 451.8 R .108
(ault shell.)-.1 F(Lik)5.108 E 2.608(eo)-.1 G .108(ther GNU softw)199.658 451.8
R .108(are, bash is quite portable.)-.1 F .109(It currently runs on nearly e)
5.109 F -.15(ve)-.25 G(ry).15 E -.15(ve)72 463.8 S .367(rsion of).15 F F4(UNIX)
2.867 E F2 .367(and a fe)2.867 F 2.867(wo)-.25 G .367
(ther operating systems \255 an independently-supported port e)187.933 463.8 R
.366(xists for OS/2, and)-.15 F .706(there are rumors of ports to DOS and W)72
475.8 R(indo)-.4 E .706(ws NT)-.25 F 5.706(.P)-.74 G .706(orts to)295.97 475.8
R F4(UNIX)3.206 E F2(-lik)A 3.206(es)-.1 G .706(ystems such as QNX and Minix)
372.979 475.8 R(are part of the distrib)72 487.8 Q(ution.)-.2 E .51
(The original author of bash w)97 503.4 R .51(as Brian F)-.1 F .509
(ox, an emplo)-.15 F .509(yee of the Free Softw)-.1 F .509(are F)-.1 F 3.009
(oundation. The)-.15 F(cur)3.009 E(-)-.2 E(rent de)72 515.4 Q -.15(ve)-.25 G
(loper and maintainer is Chet Rame).15 E 1.3 -.65(y, a v)-.15 H(olunteer who w)
.45 E(orks at Case W)-.1 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)458.91 515.4 Q
-.15(ve)-.25 G(rsity).15 E(.)-.65 E F3 2.5(2. What)72 539.4 R(is a shell?)2.5 E
F2 1.241(At its base, a shell is simply a macro processor that e)97 555 R -.15
(xe)-.15 G 1.242(cutes commands.).15 F(A)6.242 E F4(UNIX)3.742 E F2 1.242
(shell is both a)3.742 F .189(command interpreter)72 567 R 2.688(,w)-.4 G .188
(hich pro)167.787 567 R .188(vides the user interf)-.15 F .188
(ace to the rich set of)-.1 F F4(UNIX)2.688 E F2 .188
(utilities, and a programming)2.688 F .751(language, allo)72 579 R .752
(wing these utilitites to be combined.)-.25 F .752
(The shell reads commands either from a terminal or a)5.752 F 2.52
(\214le. Files)72 591 R .019
(containing commands can be created, and become commands themselv)2.52 F 2.519
(es. These)-.15 F(ne)2.519 E 2.519(wc)-.25 G(ommands)465.11 591 Q(ha)72 603 Q
.395 -.15(ve t)-.2 H .095(he same status as system commands in directories lik)
.15 F(e)-.1 E F3(/bin)2.595 E F2 2.595(,a)C(llo)342.575 603 Q .096
(wing users or groups to establish cus-)-.25 F(tom en)72 615 Q(vironments.)-.4
E F3 2.5(2.1. Command)72 639 R(Inter)2.5 E(pr)-.1 E(eter)-.18 E F2 2.926(As)97
654.6 S .426(hell allo)111.036 654.6 R .426(ws e)-.25 F -.15(xe)-.15 G .426
(cution of).15 F F4(UNIX)2.926 E F2 .426
(commands, both synchronously and asynchronously)2.926 F 5.425(.T)-.65 G(he)
460.165 654.6 Q F1 -.37(re)2.925 G(dir).37 E(ec-)-.37 E(tion)72 666.6 Q F2 .334
(constructs permit \214ne-grained control of the input and output of those com\
mands, and the shell allo)2.833 F(ws)-.25 E .559(control o)72 678.6 R -.15(ve)
-.15 G 3.058(rt).15 G .558(he contents of their en)126.697 678.6 R(vironment.)
-.4 E F4(UNIX)5.558 E F2 .558(shells also pro)3.058 F .558
(vide a small set of b)-.15 F .558(uilt-in commands)-.2 F(\()72 690.6 Q F1 -.2
(bu)C(iltins).2 E F2 4.611(\)i)C 2.112
(mplementing functionality impossible \(e.g.,)115.861 690.6 R F3(cd)4.612 E F2
(,)A F3(br)4.612 E(eak)-.18 E F2(,)A F3(continue)4.612 E F2 4.612(,a)C(nd)
399.074 690.6 Q F3(exec)4.612 E F2 4.612(\)o)C 4.612(ri)444.948 690.6 S(ncon)
455.67 690.6 Q -.15(ve)-.4 G(nient).15 E .32 LW 76 700.6 72 700.6 DL 80 700.6
76 700.6 DL 84 700.6 80 700.6 DL 88 700.6 84 700.6 DL 92 700.6 88 700.6 DL 96
700.6 92 700.6 DL 100 700.6 96 700.6 DL 104 700.6 100 700.6 DL 108 700.6 104
700.6 DL 112 700.6 108 700.6 DL 116 700.6 112 700.6 DL 120 700.6 116 700.6 DL
124 700.6 120 700.6 DL 128 700.6 124 700.6 DL 132 700.6 128 700.6 DL 136 700.6
132 700.6 DL 140 700.6 136 700.6 DL 144 700.6 140 700.6 DL/F5 8/Times-Roman@0
SF 2<8755>72 710.6 S(NIX is a trademark of X/OPEN)83.776 710.6 Q EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-2-)279.67 48 S(\()72 84 Q/F1 10/Times-Bold@0 SF
(history)A F0(,)A F1(getopts)3.505 E F0(,)A F1(kill)3.505 E F0 3.505(,o)C(r)
172.795 84 Q F1(pwd)3.505 E F0 3.505(,f)C 1.005(or e)207.305 84 R 1.005
(xample\) to obtain via separate utilities.)-.15 F 1.005
(Shells may be used interac-)6.005 F(ti)72 96 Q -.15(ve)-.25 G
(ly or non-interacti).15 E -.15(ve)-.25 G 2.5(ly: the).15 F 2.5(ya)-.15 G
(ccept input typed from the k)207.42 96 Q -.15(ey)-.1 G
(board or from a \214le.).15 E F1 2.5(2.2. Pr)72 120 R(ogramming Language)-.18
E F0 .501(While e)97 135.6 R -.15(xe)-.15 G .501
(cuting commands is essential, most of the po).15 F .501(wer \(and comple)-.25
F .502(xity\) of shells is due to their)-.15 F .05
(embedded programming languages.)72 147.6 R(Lik)5.049 E 2.549(ea)-.1 G .349
-.15(ny h)245.398 147.6 T(igh-le).15 E -.15(ve)-.25 G 2.549(ll).15 G .049
(anguage, the shell pro)303.276 147.6 R .049(vides v)-.15 F .049
(ariables, \215o)-.25 F 2.549(wc)-.25 G(ontrol)480.11 147.6 Q
(constructs, quoting, and functions.)72 159.6 Q .475
(The basic syntactic element is a)97 175.2 R/F2 10/Times-Italic@0 SF .475
(simple command)2.975 F F0 5.475(.A)C .475
(simple command consists of an optional set of)315.405 175.2 R -.25(va)72 187.2
S .525(riable assignments, a command w).25 F .525
(ord, and an optional list of ar)-.1 F 3.024(guments. Operators)-.18 F .524
(to redirect input and)3.024 F(output may appear an)72 199.2 Q
(ywhere in a simple command.)-.15 E(Some e)5 E(xamples are:)-.15 E/F3 10
/Courier@0 SF(who)97 211.2 Q(trn -e -S1 -N)97 223.2 Q(ls -l /bin > binfiles)97
235.2 Q(make > make.out 2>make.errs)97 247.2 Q F0 2.518(Ap)97 262.8 S .018
(ipeline is a sequence of tw)111.738 262.8 R 2.518(oo)-.1 G 2.518(rm)230.056
262.8 S .018(ore commands separated by the character)243.684 262.8 R/F4 10
/Symbol SF<ef>2.519 E F0 5.019(.T)C .019(he standard output)430.082 262.8 R
(of the \214rst command is connected to the standard input of the second.)72
274.8 Q(Examples of pipelines include:)5 E F3(who | wc -l)97 286.8 Q
(ls -l | sort +3nr)97 298.8 Q F0 .578
(Simple commands and pipelines may be combined into)97 314.4 R F2(lists)3.078 E
F0 5.578(.A)C .578(list is a sequence of pipelines sepa-)360.002 314.4 R .289
(rated by one of)72 326.4 R F1(;)2.789 E F0(,)A F1(&)2.789 E F0(,)A F1(&&)2.789
E F0 2.789(,o)C(r)185.103 326.4 Q F4<efef>2.789 E F0 2.789(,a)C .289
(nd optionally terminated by)210.831 326.4 R F1(;)2.789 E F0(,)A F1(&)2.789 E
F0 2.789(,o)C 2.789(ran)352.555 326.4 S -.25(ew)370.903 326.4 S 2.789
(line. Commands).25 F .289(separated by)2.789 F F1(;)72 338.4 Q F0 .336(are e)
2.836 F -.15(xe)-.15 G .336(cuted sequentially; the shell w).15 F .335
(aits for each to complete in turn.)-.1 F .335(If a command is terminated by)
5.335 F F1(&)2.835 E F0(,)A .007(the shell e)72 350.4 R -.15(xe)-.15 G .007
(cutes it in the).15 F F2(bac)2.507 E(kgr)-.2 E(ound)-.45 E F0 2.508(,a)1.666 G
.008(nd does not w)236.076 350.4 R .008(ait for it to \214nish.)-.1 F .008
(If tw)5.008 F 2.508(oc)-.1 G .008(ommands are separated by)397.616 350.4 R F1
(&&)72 362.4 Q F0 3.008(,t)C .508(he second command e)96.948 362.4 R -.15(xe)
-.15 G .508(cutes only if the \214rst command succeeds.).15 F 3.007(As)5.508 G
.507(eparator of)383.575 362.4 R F4<efef>3.007 E F0 .507(causes the sec-)3.007
F(ond command to e)72 374.4 Q -.15(xe)-.15 G(cute only if the \214rst f).15 E
2.5(ails. Some)-.1 F -.15(ex)2.5 G(amples are:).15 E F3(who ; date)97 386.4 Q
(cd /usr/src || exit 1)97 398.4 Q(cd "$@" && xtitle $HOST: $PWD)97 410.4 Q F0
1.36(The shell programming language pro)97 426 R 1.361(vides a v)-.15 F 1.361
(ariety of \215o)-.25 F 3.861(wc)-.25 G 1.361(ontrol structures.)353.276 426 R
(The)6.361 E F1 -.25(fo)3.861 G(r).25 E F0(command)3.861 E(allo)72 438 Q .654
(ws a list of commands to be e)-.25 F -.15(xe)-.15 G .654
(cuted once for each w).15 F .654(ord in a w)-.1 F .654(ord list.)-.1 F(The)
5.654 E F1(case)3.154 E F0 .654(command allo)3.154 F .654(ws a)-.25 F .627
(list to be e)72 450 R -.15(xe)-.15 G .628(cuted if a w).15 F .628
(ord matches a speci\214ed pattern.)-.1 F(The)5.628 E F1(while)3.128 E F0(and)
3.128 E F1(until)3.128 E F0 .628(commands e)3.128 F -.15(xe)-.15 G .628
(cute a list of).15 F 1.559
(commands as long as a guard command completes successfully or f)72 462 R 1.559
(ails, respecti)-.1 F -.15(ve)-.25 G(ly).15 E 6.559(.T)-.65 G(he)440.892 462 Q
F1(if)4.059 E F0(command)4.059 E(allo)72 474 Q(ws e)-.25 E -.15(xe)-.15 G
(cution of dif).15 E(ferent command lists depending on the e)-.25 E
(xit status of a guard command.)-.15 E(A)97 489.6 Q F2 .385(shell function)
2.885 F F0 .385(associates a list of commands with a name.)2.885 F .386
(Each time the name is used as a simple)5.385 F .938(command, the list is e)72
501.6 R -.15(xe)-.15 G 3.438(cuted. This).15 F -.15(exe)3.438 G .938
(cution tak).15 F .938(es place in the current shell conte)-.1 F .937
(xt; no ne)-.15 F 3.437(wp)-.25 G .937(rocess is)468.903 501.6 R 2.5
(created. Functions)72 513.6 R(may ha)2.5 E .3 -.15(ve t)-.2 H(heir o).15 E
(wn ar)-.25 E(gument lists and local v)-.18 E(ariables, and may be recursi)-.25
E -.15(ve)-.25 G(.).15 E .722(The shell language pro)97 529.2 R .722(vides v)
-.15 F .722(ariables, which may be both set and referenced.)-.25 F 3.222(An)
5.722 G .722(umber of special)435.906 529.2 R 1.02
(parameters are present, such as)72 541.2 R F1($@)3.519 E F0 3.519(,w)C 1.019
(hich returns the shell')231.257 541.2 R 3.519(sp)-.55 G 1.019
(ositional parameters \(command-line ar)333.103 541.2 R(gu-)-.18 E(ments\),)72
553.2 Q F1($?)2.906 E F0 2.906(,t)C .406(he e)122.812 553.2 R .406
(xit status of the pre)-.15 F .406(vious command, and)-.25 F F1($$)2.906 E F0
2.906(,t)C .406(he shell')322.436 553.2 R 2.906(sp)-.55 G .406(rocess I.D.)
368.248 553.2 R .407(In addition to pro)5.406 F(vid-)-.15 E .129
(ing special parameters and user)72 565.2 R .129(-de\214ned v)-.2 F .129
(ariables, the shell permits the v)-.25 F .128(alues of certain v)-.25 F .128
(ariables to control)-.25 F .16(its beha)72 577.2 R(vior)-.2 E 5.16(.S)-.55 G
.16(ome of these v)131.57 577.2 R .16(ariables include)-.25 F F1(IFS)2.661 E F0
2.661(,w)C .161(hich controls ho)284.202 577.2 R 2.661(wt)-.25 G .161
(he shell splits w)361.375 577.2 R(ords,)-.1 E F1 -.74(PA)2.661 G(TH)-.21 E F0
2.661(,w)C(hich)486.78 577.2 Q .392
(tells the shell where to look for commands, and)72 589.2 R F1(PS1)2.892 E F0
2.892(,w)C .392(hose v)297.01 589.2 R .392
(alue is the string the shell uses to prompt for)-.25 F 3.371(commands. There)
72 601.2 R .871(are a fe)3.371 F 3.371(wv)-.25 G .871(ariables whose v)196.645
601.2 R .871(alues are set by the shell and normally only referenced by)-.25 F
(users;)72 613.2 Q F1(PWD)3.663 E F0 3.663(,w)C 1.163(hose v)135.706 613.2 R
1.163(alue is the pathname of the shell')-.25 F 3.662(sc)-.55 G 1.162(urrent w)
313.068 613.2 R 1.162(orking directory)-.1 F 3.662(,i)-.65 G 3.662(so)421.894
613.2 S 1.162(ne such v)434.446 613.2 R(ariable.)-.25 E -1.11(Va)72 625.2 S
.008(riables can be used in nearly an)1.11 F 2.509(ys)-.15 G .009(hell conte)
219.37 625.2 R .009(xt and are particularly v)-.15 F .009
(aluable when used with control struc-)-.25 F(tures.)72 637.2 Q .583
(There are se)97 652.8 R -.15(ve)-.25 G .583(ral shell).15 F F2 -.2(ex)3.083 G
(pansions).2 E F0 5.583(.A)C -.25(va)254.298 652.8 S(riable).25 E F2(name)3.083
E F0 .583(is e)3.083 F .582(xpanded to its v)-.15 F .582(alue using ${)-.25 F
F2(name)A F0 .582(}, where)B 1.387(the braces are optional.)72 664.8 R 1.387
(There are a number of parameter e)6.387 F 1.388(xpansions a)-.15 F -.25(va)-.2
G 3.888(ilable. F).25 F 1.388(or e)-.15 F 1.388(xample, there are)-.15 F(${)72
676.8 Q F2(name)A F0<3aad>A F2(wor)A(d)-.37 E F0 .891(}, which e)B .891
(xpands to)-.15 F F2(wor)3.391 E(d)-.37 E F0(if)3.391 E F2(name)3.391 E F0 .891
(is unset or null, and the in)3.391 F -.15(ve)-.4 G .89(rse ${).15 F F2(name)A
F0(:+)A F2(wor)A(d)-.37 E F0 .89(}, which)B -.15(ex)72 688.8 S 1.203(pands to)
.15 F F2(wor)3.703 E(d)-.37 E F0(if)3.703 E F2(name)3.703 E F0 1.203
(is set and not null.)3.703 F F2 1.203(Command substitution)6.203 F F0(allo)
3.703 E 1.204(ws the output of a command to)-.25 F .918
(replace the command name.)72 700.8 R .918(The syntax is `)5.918 F F2(command)A
F0(`.)A F2(Command)5.918 E F0 .918(is e)3.418 F -.15(xe)-.15 G .918
(cuted and it and the backquotes).15 F .299
(are replaced by its output, with trailing ne)72 712.8 R .299(wlines remo)-.25
F -.15(ve)-.15 G(d.).15 E F2 -.8(Pa)5.299 G .299(thname e).8 F(xpansion)-.2 E
F0 .299(is a w)2.799 F .299(ay to e)-.1 F .299(xpand a w)-.15 F(ord)-.1 E 1.586
(to a set of \214lenames.)72 724.8 R -.8(Wo)6.586 G 1.586(rds are re).8 F -.05
(ga)-.15 G 1.586(rded as patterns, in which the characters).05 F F1(*)4.086 E
F0(,)A F1(?)4.086 E F0 4.085(,a)C(nd)432.115 724.8 Q F1([)4.085 E F0(ha)4.085 E
1.885 -.15(ve s)-.2 H(pecial).15 E EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-3-)279.67 48 S 2.845(meaning. W)72 84 R .346(ords\
 containing these special characters are replaced with a sorted list of matchi\
ng pathnames.)-.8 F(If a w)72 96 Q
(ord generates no matches, it is left unchanged.)-.1 E/F1 10/Times-Italic@0 SF
(Quoting)97 111.6 Q F0 .85(is used to remo)3.35 F 1.15 -.15(ve t)-.15 H .85
(he special meaning of characters or w).15 F 3.35(ords. It)-.1 F .85
(can disable special treat-)3.35 F .314
(ment for shell operators or other special characters, pre)72 123.6 R -.15(ve)
-.25 G .315(nt reserv).15 F .315(ed w)-.15 F .315
(ords from being recognized as such,)-.1 F .683(and inhibit v)72 135.6 R .683
(ariable e)-.25 F 3.183(xpansion. The)-.15 F .683
(shell has three quoting mechanisms:)3.183 F 3.183(ab)5.683 G .683
(ackslash preserv)387.413 135.6 R .682(es the literal)-.15 F -.25(va)72 147.6 S
.417(lue of the ne).25 F .417(xt character)-.15 F 2.917(,ap)-.4 G .417
(air of single quotes preserv)196.712 147.6 R .417(es the literal v)-.15 F .418
(alue of each character between the)-.25 F 1.426
(quotes, and a pair of double quotes preserv)72 159.6 R 1.425
(es the literal meaning of enclosed characters while allo)-.15 F(wing)-.25 E
(some e)72 171.6 Q(xpansions.)-.15 E 1.054(Some of the commands b)97 187.2 R
1.054(uilt into the shell are part of the programming language.)-.2 F(The)6.055
E/F2 10/Times-Bold@0 SF(br)3.555 E(eak)-.18 E F0(and)3.555 E F2(continue)72
199.2 Q F0 1.175(commands control loop e)3.675 F -.15(xe)-.15 G 1.175
(cution as in the C language.).15 F(The)6.175 E F2 -2.3 -.15(ev a)3.675 H(l).15
E F0 -.2(bu)3.675 G 1.174(iltin allo).2 F 1.174(ws a string to be)-.25 F .204
(parsed and e)72 211.2 R -.15(xe)-.15 G .204(cuted as a command.).15 F F2 -.65
(Wa)5.205 G(it).65 E F0 .205
(tells the shell to pause until the processes speci\214ed as ar)2.705 F
(guments)-.18 E(ha)72 223.2 Q .3 -.15(ve ex)-.2 H(ited.).15 E F2 2.5
(2.3. Interacti)72 247.2 R .2 -.1(ve F)-.1 H(eatur)-.15 E(es)-.18 E F0 .51
(Shells ha)97 262.8 R .81 -.15(ve b)-.2 H -.15(eg).15 G .51(un of).15 F .51
(fering features geared speci\214cally for interacti)-.25 F .81 -.15(ve u)-.25
H .51(se rather than to augment the).15 F .76(programming language.)72 274.8 R
.761(These interacti)5.76 F 1.061 -.15(ve f)-.25 H .761
(eatures include job control, command line editing, history and).15 F(aliases.)
72 286.8 Q .626(Job control is a f)97 302.4 R .626(acility pro)-.1 F .626
(vided jointly by the shell and the)-.15 F/F3 9/Times-Roman@0 SF(UNIX)3.125 E
F0 -.1(ke)3.125 G .625(rnel that allo).1 F .625(ws users to selec-)-.25 F(ti)72
314.4 Q -.15(ve)-.25 G .344
(ly stop \(suspend\) and restart \(resume\) processes.).15 F .345
(Each pipeline e)5.345 F -.15(xe)-.15 G .345
(cuted by the shell is referred to as a).15 F F1(job)72 326.4 Q F0 2.989(.J)C
.488(obs may be suspended and restarted in either the fore)94.159 326.4 R .488
(ground, where the)-.15 F 2.988(yh)-.15 G -2.25 -.2(av e)397.148 326.4 T .488
(access to the terminal,)3.188 F .833(or background, where the)72 338.4 R 3.333
(ya)-.15 G .834(re isolated and cannot read from the terminal.)189.312 338.4 R
-.8(Ty)5.834 G .834(ping the).8 F F1(suspend)3.334 E F0(character)5 E .459(whi\
le a process is running stops that process and returns control to the shell.)72
350.4 R .459(Once a job is suspended, the)5.459 F .392
(user manipulates the job')72 362.4 R 2.892(ss)-.55 G .392(tate, using)184.118
362.4 R F2(bg)2.892 E F0 .393(to continue it in the background,)2.892 F F2(fg)
2.893 E F0 .393(to return it to the fore)2.893 F(ground)-.15 E .891(and a)72
374.4 R -.1(wa)-.15 G .891(it its completion, or).1 F F2(kill)3.391 E F0 .891
(to send it a signal.)3.391 F(The)5.89 E F2(jobs)3.39 E F0 .89
(command lists the status of jobs, and)3.39 F F2(wait)3.39 E F0 .407
(will pause the shell until a speci\214ed job terminates.)72 386.4 R .407
(The shell pro)5.407 F .407(vides a number of w)-.15 F .407
(ays to refer to a job,)-.1 F(and will notify the user whene)72 398.4 Q -.15
(ve)-.25 G 2.5(rab).15 G(ackground job terminates.)220.18 398.4 Q -.4(Wi)97 414
S .956(th the adv).4 F .956(ent of more po)-.15 F .956
(werful terminals and terminal emulators, more sophisticated interaction)-.25 F
.253(than that pro)72 426 R .253(vided by the)-.15 F F3(UNIX)2.753 E F0 -.1(ke)
2.754 G .254(rnel terminal dri).1 F -.15(ve)-.25 G 2.754(ri).15 G 2.754(sp)
293.592 426 S 2.754(ossible. Some)305.236 426 R .254(shells of)2.754 F .254
(fer command line editing,)-.25 F 1.141
(which permits a user to edit lines of input using f)72 438 R(amiliar)-.1 E F1
(emacs)3.64 E F0(or)3.64 E F1(vi)3.64 E F0 1.14
(-style commands before submitting)B .02(them to the shell.)72 450 R .02
(Editors allo)5.02 F 2.52(wc)-.25 G .02(orrections to be made without ha)206.31
450 R .021(ving to erase back to the point of error)-.2 F 2.521(,o)-.4 G(r)
500.67 450 Q .135(start the line ane)72 462 R 3.935 -.65(w. C)-.25 H .135
(ommand line editors run the g).65 F .135(amut from a small \214x)-.05 F .134
(ed set of commands and k)-.15 F .434 -.15(ey b)-.1 H(ind-).15 E
(ings to input f)72 474 Q(acilities which allo)-.1 E 2.5(wa)-.25 G
(rbitrary actions to be bound to a k)217.2 474 Q .3 -.15(ey o)-.1 H 2.5(rk).15
G .3 -.15(ey s)379.88 474 T(equence.).15 E .145(Modern shells also k)97 489.6 R
.145(eep a history)-.1 F 2.645(,w)-.65 G .146
(hich is the list of commands a user has typed.)243.49 489.6 R .146(Shell f)
5.146 F .146(acilities are)-.1 F -.2(av)72 501.6 S .368(ailable to recall pre)
-.05 F .367(vious commands and use portions of old commands when composing ne)
-.25 F 2.867(wo)-.25 G 2.867(nes. The)467.253 501.6 R 1.456
(command history can be sa)72 513.6 R -.15(ve)-.2 G 3.957(dt).15 G 3.957
(oa\214)207.522 513.6 S 1.457
(le and read back in at shell startup, so it persists across sessions.)230.436
513.6 R .675(Shells which pro)72 525.6 R .675
(vide both command editing and history generally ha)-.15 F .974 -.15(ve e)-.2 H
.674(diting commands to interacti).15 F -.15(ve)-.25 G(ly).15 E(step forw)72
537.6 Q(ard and backw)-.1 E(ard through the history list.)-.1 E .013
(Aliases allo)97 553.2 R -5.012 2.513(wa s)-.25 H .014
(tring to be substituted for a command name.)164.28 553.2 R(The)5.014 E 2.514
(yc)-.15 G .014(an be used to create a mnemonic)373.396 553.2 R .568(for a)72
565.2 R F3(UNIX)3.068 E F0 .568(command name \()3.068 F/F4 10/Courier@0 SF .568
(alias del=rm)B F0 .568(\), to e)B .567(xpand a single w)-.15 F .567
(ord to a comple)-.1 F 3.067(xc)-.15 G .567(ommand \()432.603 565.2 R F4(alias)
A .255(news='xterm -g 80x45 -title trn -e trn -e -S1 -N &')72 577.2 R F0 .255
(\), or to ensure that a command)B(is in)72 589.2 Q -.2(vo)-.4 G -.1(ke).2 G
2.5(dw).1 G(ith a basic set of options \()122.41 589.2 Q F4
(alias ls="/bin/ls -F")A F0(\).)A F2 2.5(3. The)72 613.2 R
(POSIX Shell Standard)2.5 E F1(POSIX)97 628.8 Q F0 .239
(is a name originally coined by Richard Stallman for a f)4.405 F .239
(amily of open system standards based)-.1 F(on)72 640.8 Q F3(UNIX)3.239 E F0
5.739(.T)C .74(here are a number of aspects of)122.079 640.8 R F3(UNIX)3.24 E
F0 .74(under consideration for standardization, from the basic)3.24 F .192
(system services at the system call and C library le)72 652.8 R -.15(ve)-.25 G
2.692(lt).15 G 2.692(oa)290.16 652.8 S .191
(pplications and tools to system administration and)302.292 652.8 R 2.5
(management. Each)72 664.8 R(area of standardization is assigned to a w)2.5 E
(orking group in the 1003 series.)-.1 E 3.602(The POSIX Shell and T)97 680.4 R
3.602(ools standard has been de)-.8 F -.15(ve)-.25 G 3.603(loped by IEEE W).15
F 3.603(orking Group 1003.2)-.8 F -1.667(\(POSIX.2\) [4].)72 692.4 R 2.799
(It concentrates on the command interpreter interf)7.799 F 2.799
(ace and utility programs commonly)-.1 F -.15(exe)72 704.4 S 2.345
(cuted from the command line or by other programs.).15 F 2.345(An initial v)
7.345 F 2.345(ersion of the standard has been)-.15 F(appro)72 716.4 Q -.15(ve)
-.15 G 2.915(da).15 G .414(nd published by the IEEE, and w)116.265 716.4 R .414
(ork is currently underw)-.1 F .414(ay to update it.)-.1 F .414
(There are four primary)5.414 F(areas of w)72 728.4 Q
(ork in the 1003.2 standard:)-.1 E EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-4-)279.67 48 S 21.5<8341>72 84 S .835
(spects of the shell')104.22 84 R 3.335(ss)-.55 G .835
(yntax and command language.)192 84 R 3.335(An)5.835 G .835(umber of special b)
338.095 84 R .835(uiltins such as)-.2 F/F1 10/Times-Bold@0 SF(cd)3.335 E F0
(and)3.335 E F1(exec)97 96 Q F0 .545(are being speci\214ed as part of the shel\
l, since their functionality usually cannot be implemented)3.046 F
(by a separate e)97 108 Q -.15(xe)-.15 G(cutable;).15 E 21.5<8341>72 123.6 S
.73(set of utilities to be called by shell scripts and applications.)107.45
123.6 R .731(Examples are programs lik)5.731 F(e)-.1 E/F2 10/Times-Italic@0 SF
2.397(sed, tr)3.231 F(,)-1.11 E F0(and)97 135.6 Q F2(awk.)2.853 E F0 .352
(Utilities commonly implemented as shell b)4.519 F .352
(uiltins are described in this section, such as)-.2 F F1(test)2.852 E F0(and)97
147.6 Q F1(kill)3.422 E F0 5.922(.A)C 3.422(ne)144.404 147.6 S .922
(xpansion of this section')157.116 147.6 R 3.423(ss)-.55 G .923
(cope, termed the User Portability Extension, or UPE, has)268.586 147.6 R
(standardized interacti)97 159.6 Q .3 -.15(ve p)-.25 H(rograms such as).15 E F2
(vi)2.5 E F0(and)4.166 E F2(mailx;)2.5 E F0 21.5<8341>72 175.2 S .926
(group of functional interf)107.646 175.2 R .926(aces to services pro)-.1 F
.926(vided by the shell, such as the traditional)-.15 F F2(system)3.425 E F0(C)
5.091 E .507(library function.)97 187.2 R .507
(There are functions to perform shell w)5.507 F .508(ord e)-.1 F .508
(xpansions, perform \214lename e)-.15 F(xpansion)-.15 E(\()97 199.2 Q F2
(globbing)A F0 .58(\), obtain v)B .58
(alues of POSIX.2 system con\214guration v)-.25 F .58(ariables, retrie)-.25 F
.88 -.15(ve v)-.25 H .58(alues of en)-.1 F(vironment)-.4 E -.25(va)97 211.2 S
(riables \().25 E F2 -.1(ge)C(ten).1 E(v\(\))-.4 E F0(\), and other services;)
.833 E 21.5<8341>72 226.8 S(suite of `)106.72 226.8 Q(`de)-.74 E -.15(ve)-.25 G
(lopment').15 E 2.5('u)-.74 G(tilities such as)209.54 226.8 Q F2(c89)2.5 E F0
(\(the POSIX.2 v)4.166 E(ersion of)-.15 E F2(cc)2.5 E F0(\), and)A F2(yacc.)2.5
E F0 .483(Bash is concerned with the aspects of the shell')97 242.4 R 2.983(sb)
-.55 G(eha)301.597 242.4 Q .484(vior de\214ned by POSIX.2.)-.2 F .484
(The shell command)5.484 F 1.439
(language has of course been standardized, including the basic \215o)72 254.4 R
3.938(wc)-.25 G 1.438(ontrol and program e)359.688 254.4 R -.15(xe)-.15 G 1.438
(cution con-).15 F 1.145(structs, I/O redirection and pipelining, ar)72 266.4 R
1.145(gument handling, v)-.18 F 1.145(ariable e)-.25 F 1.146
(xpansion, and quoting.)-.15 F(The)6.146 E F2(special)3.646 E F0 -.2(bu)72
278.4 S .676(iltins, which must be implemented as part of the shell to pro).2 F
.676(vide the desired functionality)-.15 F 3.176(,a)-.65 G .676(re speci\214ed)
457.504 278.4 R .7(as being part of the shell; e)72 290.4 R .7
(xamples of these are)-.15 F F1 -2.3 -.15(ev a)3.201 H(l).15 E F0(and)3.201 E
F1(export)3.201 E F0 5.701(.O)C .701(ther utilities appear in the sections of)
352.034 290.4 R .256(POSIX.2 not de)72 302.4 R -.2(vo)-.25 G .256(ted to the s\
hell which are commonly \(and in some cases must be\) implemented as b).2 F
(uiltin)-.2 E(commands, such as)72 314.4 Q F1 -.18(re)2.5 G(ad).18 E F0(and)2.5
E F1(test)2.5 E F0(.)A .972(POSIX.2 also speci\214es aspects of the shell')97
330 R 3.473(si)-.55 G(nteracti)286.016 330 Q 1.273 -.15(ve b)-.25 H(eha).15 E
.973(vior as part of the UPE, including job)-.2 F .233
(control, command line editing, and history)72 342 R 5.233(.I)-.65 G .233
(nterestingly enough, only)253.849 342 R F2(vi)2.733 E F0 .233
(-style line editing commands ha)B -.15(ve)-.2 G(been standardized;)72 354 Q F2
(emacs)2.5 E F0(editing commands were left out due to objections.)2.5 E .148
(There were certain areas in which POSIX.2 felt standardization w)97 369.6 R
.149(as necessary)-.1 F 2.649(,b)-.65 G .149(ut no e)420.643 369.6 R .149
(xisting imple-)-.15 F 1.598(mentation pro)72 381.6 R 1.598
(vided the proper beha)-.15 F(vior)-.2 E 6.598(.T)-.55 G 1.598(he w)251.56
381.6 R 1.597(orking group in)-.1 F -.15(ve)-.4 G 1.597
(nted and standardized functionality in).15 F .228(these areas.)72 393.6 R(The)
5.228 E F1(command)2.728 E F0 -.2(bu)2.728 G .228(iltin w).2 F .228(as in)-.1 F
-.15(ve)-.4 G .228(nted so that shell functions could be written to replace b)
.15 F(uiltins;)-.2 E 1.663(it mak)72 405.6 R 1.663
(es the capabilities of the b)-.1 F 1.663(uiltin a)-.2 F -.25(va)-.2 G 1.663
(ilable to the function.).25 F 1.663(The reserv)6.663 F 1.663(ed w)-.15 F 1.663
(ord `)-.1 F(`!')-.74 E 4.163('w)-.74 G 1.663(as added to)455.685 405.6 R(ne)72
417.6 Q -.05(ga)-.15 G .915(te the return v).05 F .915
(alue of a command or pipeline; it w)-.25 F .916(as nearly impossible to e)-.1
F .916(xpress `)-.15 F .916(`if not x')-.74 F 3.416('c)-.74 G(leanly)479.56
417.6 Q .904(using the sh language.)72 429.6 R .904(There e)5.904 F .904
(xist multiple incompatible implementations of the)-.15 F F1(test)3.403 E F0
-.2(bu)3.403 G .903(iltin, which tests).2 F .28
(\214les for type and other attrib)72 441.6 R .281
(utes and performs arithmetic and string comparisons.)-.2 F .281
(POSIX considered none)5.281 F .868(of these correct, so the standard beha)72
453.6 R .868(vior w)-.2 F .868(as speci\214ed in terms of the number of ar)-.1
F .867(guments to the com-)-.18 F 3.803(mand. POSIX.2)72 465.6 R 1.303
(dictates e)3.803 F 1.303(xactly what will happen when four or fe)-.15 F 1.303
(wer ar)-.25 F 1.303(guments are gi)-.18 F -.15(ve)-.25 G 3.803(nt).15 G(o)
459.462 465.6 Q F1(test)3.804 E F0 3.804(,a)C(nd)494 465.6 Q(lea)72 477.6 Q
-.15(ve)-.2 G 4.531(st).15 G 2.031(he beha)103.951 477.6 R 2.031
(vior unde\214ned when more ar)-.2 F 2.031(guments are supplied.)-.18 F 2.03
(Bash uses the POSIX.2 algorithm,)7.031 F(which w)72 489.6 Q(as concei)-.1 E
-.15(ve)-.25 G 2.5(db).15 G 2.5(yD)164.53 489.6 S -.2(av)179.25 489.6 S(id K).2
E(orn.)-.35 E 1.128
(While POSIX.2 includes much of what the shell has traditionally pro)97 505.2 R
1.129(vided, some important things)-.15 F(ha)72 517.2 Q .58 -.15(ve b)-.2 H .28
(een omitted as being `).15 F(`be)-.74 E .28(yond its scope.)-.15 F 4.26 -.74
('' T)-.7 H .28(here is, for instance, no mention of a dif).74 F .28
(ference between)-.25 F(a)72 529.2 Q F2(lo)3.354 E(gin)-.1 E F0 .854
(shell and an)5.02 F 3.354(yo)-.15 G .854(ther interacti)167.956 529.2 R 1.154
-.15(ve s)-.25 H .854(hell \(since POSIX.2 does not specify a login program\).)
.15 F .855(No \214x)5.855 F(ed)-.15 E
(startup \214les are de\214ned, either \255 the standard does not mention)72
541.2 Q F2(.pr)2.5 E(o\214le)-.45 E F0(.)1.666 E F1 2.5(4. Shell)72 565.2 R
(Comparison)2.5 E F0 .693(This section compares features of bash, sh, and ksh \
\(the three shells closest to POSIX compliance\).)97 580.8 R .245(Since ksh an\
d bash are supersets of sh, the features common to all three are co)72 592.8 R
-.15(ve)-.15 G .245(red \214rst.).15 F .245(Some of the fea-)5.245 F 1.198
(tures bash and ksh contain which are not in sh will be discussed.)72 604.8 R
(Ne)6.198 E 1.198(xt, features unique to bash will be)-.15 F 2.866(listed. The)
72 616.8 R .366(\214rst three sections pro)2.866 F .366(vide a progressi)-.15 F
-.15(ve)-.25 G .366(ly more detailed o).15 F -.15(ve)-.15 G(rvie).15 E 2.866
(wo)-.25 G 2.866(fb)395.706 616.8 S 2.866(ash. Finally)406.902 616.8 R 2.866
(,f)-.65 G .366(eatures of)464.484 616.8 R(ksh-88 \(the currently-a)72 628.8 Q
-.25(va)-.2 G(ilable v).25 E(ersion\) not in sh or bash will be presented.)-.15
E F1 2.5(4.1. Common)72 652.8 R -.25(Fe)2.5 G(atur).25 E(es)-.18 E F0 .021
(All three shells ha)97 668.4 R .321 -.15(ve t)-.2 H .021
(he same basic feature set, which is essentially that pro).15 F .02
(vided by sh and described)-.15 F 1.026(in an)72 680.4 R 3.526(ys)-.15 G 3.526
(hm)105.012 680.4 S 1.027
(anual page. Bash and ksh are both sh supersets, and so all three pro)121.318
680.4 R 1.027(vide the command inter)-.15 F(-)-.2 E .714
(preter and programming language described earlier)72 692.4 R 3.214(.T)-.55 G
.714(he shell grammar)291.506 692.4 R 3.214(,s)-.4 G .714(yntax, \215o)371.568
692.4 R 3.214(wc)-.25 G .714(ontrol, redirections,)424.686 692.4 R(and b)72
704.4 Q(uiltins implemented by the Bourne shell are the baseline for subsequen\
t discussion.)-.2 E EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-5-)279.67 48 S/F1 10/Times-Bold@0 SF 2.5(4.2. F)72
84 R(eatur)-.25 E(es in bash and ksh)-.18 E F0 .458(Ksh and bash ha)97 99.6 R
.758 -.15(ve s)-.2 H -2.15 -.25(ev e).15 H .459(ral features in common be).25 F
.459(yond this base le)-.15 F -.15(ve)-.25 G 2.959(lo).15 G 2.959(ff)387.814
99.6 S(unctionality)397.433 99.6 Q 5.459(.S)-.65 G .459(ome of this)458.082
99.6 R(is due to the POSIX.2 standard.)72 111.6 Q(Other functions ha)5 E .3
-.15(ve b)-.2 H(een implemented in bash using ksh as a guide.).15 E F1 2.5
(4.2.1. V)72 135.6 R(ariables and V)-.92 E(ariable Expansion)-.92 E F0 .097
(Bash and ksh ha)97 151.2 R .396 -.15(ve a)-.2 H .096(ugmented v).15 F .096
(ariable e)-.25 F 2.596(xpansion. Arithmetic)-.15 F .096(substitution allo)
2.596 F .096(ws an e)-.25 F .096(xpression to be)-.15 F -.25(eva)72 163.2 S .6
(luated and the result substituted.).25 F .6(Shell v)5.6 F .6
(ariables may be used as operands, and the result of an e)-.25 F(xpres-)-.15 E
.41(sion may be assigned to a v)72 175.2 R 2.91(ariable. Nearly)-.25 F .41
(all of the operators from the C language are a)2.91 F -.25(va)-.2 G .41
(ilable, with the).25 F(same precedence rules:)72 187.2 Q/F2 10/Courier@0 SF 6
($e)97 205.2 S(cho $\(\(3 + 5 * 32\)\))115 205.2 Q(163)97 217.2 Q F0 -1.11(Va)
72 238.8 S 1.445(riables may be declared as)1.11 F/F3 10/Times-Italic@0 SF
(inte)3.945 E -.1(ge)-.4 G(r).1 E F0 3.945(,w)1.666 G 1.446
(hich causes arithmetic e)240.956 238.8 R -.25(va)-.25 G 1.446
(luation to be performed on the v).25 F(alue)-.25 E(whene)72 250.8 Q -.15(ve)
-.25 G 2.5(rt).15 G(he)115.75 250.8 Q 2.5(ya)-.15 G(re assigned to.)136.98
250.8 Q .483(There are ne)97 266.4 R 2.983(we)-.25 G .483
(xpansions to obtain the length of a v)162.179 266.4 R(ariable')-.25 E 2.982
(sv)-.55 G .482(alue and to remo)352.19 266.4 R .782 -.15(ve s)-.15 H .482
(ubstrings match-).15 F .063(ing speci\214ed patterns from the be)72 278.4 R
.063(ginning and end of v)-.15 F .063(ariable v)-.25 F 2.563(alues. A)-.25 F
(ne)2.563 E 2.563(wf)-.25 G .064(orm of command substitution,)383.249 278.4 R
F1($\()72 290.4 Q F3(list)A F1(\))A F0 2.5(,i)C 2.5(sm)103.67 290.4 S
(uch easier to nest than `)117.84 290.4 Q F3(list)A F0 2.5(`a)C
(nd has simpli\214ed quoting rules.)235.04 290.4 Q .082(There are ne)97 306 R
2.582(wv)-.25 G .082(ariables to control the shell')161.436 306 R 2.581(sb)-.55
G(eha)284.333 306 Q(vior)-.2 E 2.581(,a)-.4 G .081(nd additional v)323.244 306
R .081(ariables set or interpreted spe-)-.25 F 1.038(cially by the shell.)72
318 R F1(RANDOM)6.038 E F0(and)3.538 E F1(SECONDS)3.538 E F0(are)3.539 E F3
(dynamic)3.539 E F0 -.25(va)3.539 G 3.539(riables: their).25 F -.25(va)3.539 G
1.039(lues are generated afresh).25 F 1.022(each time the)72 330 R 3.522(ya)
-.15 G 1.022(re referenced.)140.176 330 R F1(RANDOM)6.022 E F0 1.021
(returns a dif)3.521 F 1.021(ferent random number each time it is referenced,)
-.25 F(and)72 342 Q F1(SECONDS)3.138 E F0 .638
(returns the number of seconds since the shell w)3.138 F .638
(as started or the v)-.1 F .639(ariable w)-.25 F .639(as assigned to,)-.1 F
1.448(plus an)72 354 R 3.948(yv)-.15 G 1.448(alue assigned.)115.606 354 R F1
(PWD)6.448 E F0(and)3.948 E F1(OLDPWD)3.947 E F0 1.447
(are set to the current and pre)3.947 F 1.447(vious w)-.25 F 1.447
(orking directories,)-.1 F(respecti)72 366 Q -.15(ve)-.25 G(ly).15 E(.)-.65 E
F1(TMOUT)5.604 E F0 .604(controls ho)3.104 F 3.104(wl)-.25 G .604
(ong the shell will w)226.436 366 R .604(ait at a prompt for input.)-.1 F(If)
5.604 E F1(TMOUT)3.104 E F0 .605(is set to a)3.105 F -.25(va)72 378 S 1.168
(lue greater than zero, the shell e).25 F 1.168(xits after w)-.15 F 1.168
(aiting that man)-.1 F 3.668(ys)-.15 G 1.167(econds for input.)337.478 378 R F1
(REPL)6.167 E(Y)-.92 E F0 1.167(is the def)3.667 F(ault)-.1 E -.25(va)72 390 S
.991(riable for the).25 F F1 -.18(re)3.491 G(ad).18 E F0 -.2(bu)3.491 G .991
(iltin; if no v).2 F .992(ariable names are supplied as ar)-.25 F .992
(guments, the line read is assigned to)-.18 F F1(REPL)72 402 Q(Y)-.92 E F0(.)A
F1 2.5(4.2.2. New)72 426 R(and Modi\214ed Builtins)2.5 E F0 .652(Both shells e)
97 441.6 R .651(xpand the basic sh set of b)-.15 F .651(uiltin commands.)-.2 F
F1(Let)5.651 E F0(pro)3.151 E .651(vides a w)-.15 F .651
(ay to perform arithmetic)-.1 F 2.767(on shell v)72 453.6 R 5.268
(ariables. Shell)-.25 F 2.768(programmers use)5.268 F F1(typeset)5.268 E F0
2.768(\(bash includes)5.268 F F1(declar)5.268 E(e)-.18 E F0 2.768(as a synon)
5.268 F 2.768(ym\) to assign)-.15 F(attrib)72 465.6 Q .295(utes such as)-.2 F
F3 -.2(ex)2.795 G(port).2 E F0(and)4.461 E F3 -.37(re)2.795 G(adonly).37 E F0
.295(to v)4.461 F(ariables.)-.25 E F1(Getopts)5.295 E F0 .294
(is used by shell scripts to parse script options)2.795 F .962(and ar)72 477.6
R 3.462(guments. The)-.18 F F1(set)3.462 E F0 .962(command has a ne)3.462 F
3.462(wo)-.25 G(ption)266.446 477.6 Q F1<ad6f>3.463 E F0 .963(which tak)3.463 F
.963(es option names as ar)-.1 F 3.463(guments. Option)-.18 F 1.28
(names are synon)72 489.6 R 1.28(yms for the other set options \(e.g.,)-.15 F
F1<ad66>3.78 E F0(and)3.78 E F1 1.28(\255o noglob)3.78 F F0 3.78(\)o)C 3.78(rp)
375.97 489.6 S(ro)388.08 489.6 Q 1.28(vide ne)-.15 F 3.78(wf)-.25 G 1.28
(unctionality \()440.78 489.6 R F1(-o)A(notify)72 501.6 Q F0 3.348(,f)C .849
(or e)106.178 501.6 R 3.349(xample\). The)-.15 F F1 -.18(re)3.349 G(ad).18 E F0
-.2(bu)3.349 G .849(iltin tak).2 F .849(es a ne)-.1 F(w)-.25 E F1<ad72>3.349 E
F0 .849(option to specify that a line ending in a backslash)3.349 F
(should not be continued.)72 513.6 Q F1 2.5(4.2.3. T)72 537.6 R(ilde Expansion)
-.18 E F0 -.35(Ti)97 553.2 S .252(lde e).35 F .251
(xpansion is a feature adopted from the C shell.)-.15 F 2.751(At)5.251 G .251
(ilde character at the be)331.172 553.2 R .251(ginning of a w)-.15 F .251
(ord is)-.1 F -.15(ex)72 565.2 S(panded to either).15 E F1($HOME)2.5 E F0
(or the home directory of another user)2.5 E 2.5(,d)-.4 G
(epending on what follo)345.84 565.2 Q(ws the tilde.)-.25 E F1 2.5
(4.2.4. Interacti)72 589.2 R .2 -.1(ve I)-.1 H(mpr).1 E -.1(ove)-.18 G(ments).1
E F0 .789(The most noticable impro)97 604.8 R -.15(ve)-.15 G .789(ments o).15 F
-.15(ve)-.15 G 3.289(rs).15 G 3.289(ha)263.385 604.8 S .789
(re geared for interacti)276.114 604.8 R 1.089 -.15(ve u)-.25 H 3.29(se. Ksh)
.15 F .79(and bash pro)3.29 F .79(vide job)-.15 F .882(control in a v)72 616.8
R .882(ery similar f)-.15 F .882
(ashion, with the same options to enable and disable it \()-.1 F F1 .881
(set -o monitor)B F0 3.381(\)a)C .881(nd the)478.399 616.8 R(same b)72 628.8 Q
(uiltin commands to manipulate jobs \()-.2 E F1(jobs/fg/bg/kill/wait)A F0(\).)A
.866(Command line editing, with emacs and vi-style k)97 644.4 R 1.166 -.15
(ey b)-.1 H .866(indings, is a).15 F -.25(va)-.2 G .866(ilable in both shells.)
.25 F .866(The Bash)5.866 F F3 -.37(re)72 656.4 S(adline).37 E F0 1.578
(library is considerably more sophisticated than the ksh editing library:)5.744
F 1.577(it allo)6.577 F 1.577(ws arbitrary k)-.25 F -.15(ey)-.1 G 1.867
(bindings, macros, a per)72 668.4 R 1.868(-user customization \214le \()-.2 F
F3(~/.inputr)A(c)-.37 E F0 1.868(\), a number of v)B 1.868
(ariables to further customize)-.25 F(beha)72 680.4 Q(vior)-.2 E 3.538(,a)-.4 G
1.038(nd a much lar)116.868 680.4 R 1.038
(ger set of bindable editing commands.)-.18 F 1.037
(The ksh editing library pro)6.037 F 1.037(vides a small)-.15 F<8c78>72 692.4 Q
(ed command set and only clumsy macros.)-.15 E .706(Both shells of)97 708 R
.706(fer access to the command history)-.25 F 5.706(.T)-.65 G .706
(he in-line editing options ha)307.278 708 R 1.006 -.15(ve d)-.2 H(ef).15 E
.706(ault k)-.1 F 1.006 -.15(ey b)-.1 H(ind-).15 E .624
(ings to access the history list.)72 720 R(The)5.624 E F1(fc)3.124 E F0 .624
(command is pro)3.124 F .624(vided to re-e)-.15 F -.15(xe)-.15 G .623(cute pre)
.15 F .623(vious commands and display)-.25 F EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-6-)279.67 48 S(the contents of the history list.)
72 84 Q/F1 10/Times-Bold@0 SF 2.5(4.2.5. Miscellaneous)72 108 R
(Changes and Impr)2.5 E -.1(ov)-.18 G(ments).1 E F0 .707(Other impro)97 123.6 R
-.15(ve)-.15 G .707(ments include aliases, the).15 F F1(select)3.207 E F0 .708
(shell language construct, which supports the genera-)3.207 F 1.298
(tion and presentation of simple menus, and e)72 135.6 R 1.298
(xtensions to the)-.15 F F1(export)3.798 E F0(and)3.798 E F1 -.18(re)3.798 G
(adonly).18 E F0 -.2(bu)3.798 G 1.298(iltins which allo).2 F(w)-.25 E -.25(va)
72 147.6 S .017(riables to be assigned v).25 F .017
(alues at the same time the attrib)-.25 F .017(utes are set.)-.2 F -.8(Wo)5.018
G .018(rd splitting has changed:).8 F .018(if tw)5.018 F 2.518(oo)-.1 G(r)
500.67 147.6 Q .158(more adjacent w)72 159.6 R .157
(ord splitting characters occur)-.1 F 2.657(,b)-.4 G .157
(ash and ksh will generate null \214elds; sh mak)264.893 159.6 R .157
(es runs of mul-)-.1 F .339
(tiple \214eld separator charactors the same as a single separator)72 171.6 R
5.339(.B)-.55 G .34(ash and ksh split only the results of e)330.89 171.6 R
(xpan-)-.15 E(sion, rather than e)72 183.6 Q -.15(ve)-.25 G(ry w).15 E
(ord as sh does, closing a long-standing shell security hole.)-.1 E 1.234
(Shell functions in bash and ksh may ha)97 199.2 R 1.534 -.15(ve l)-.2 H 1.234
(ocal v).15 F 3.734(ariables. V)-.25 F 1.234(ariables declared with)-1.11 F F1
(typeset)3.734 E F0 1.234(\(or the)3.734 F .001(bash synon)72 211.2 R(ym,)-.15
E F1(local)2.501 E F0 .001(\), ha)B .301 -.15(ve a s)-.2 H .001
(cope restricted to the function and its descendents, and may shado).15 F 2.502
(wv)-.25 G(ariables)472.9 211.2 Q(de\214ned by the in)72 223.2 Q -.2(vo)-.4 G
(king shell.).2 E(Local v)5 E(ariables are remo)-.25 E -.15(ve)-.15 G 2.5(dw)
.15 G(hen a function completes.)317.75 223.2 Q F1 2.5(4.3. F)72 247.2 R(eatur)
-.25 E(es Unique to bash)-.18 E F0(Naturally)97 262.8 Q 2.895(,b)-.65 G .395
(ash includes features not in sh or ksh.)144.515 262.8 R .395
(This section discusses some of the features which)5.395 F(mak)72 274.8 Q 2.986
(eb)-.1 G .486(ash unique.)101.546 274.8 R .486(Most of them pro)5.486 F .486
(vide impro)-.15 F -.15(ve)-.15 G 2.986(di).15 G(nteracti)288.098 274.8 Q .787
-.15(ve u)-.25 H .487(se, b).15 F .487(ut a fe)-.2 F 2.987(wp)-.25 G .487
(rogramming impro)394.653 274.8 R -.15(ve)-.15 G(ments).15 E
(are present as well.)72 286.8 Q
(Full descriptions of these features can be found in the bash documentation.)5
E F1 2.5(4.3.1. Startup)72 310.8 R(Files)2.5 E F0 .281(Bash e)97 326.4 R -.15
(xe)-.15 G .281(cutes startup \214les dif).15 F .281
(ferently than other shells.)-.25 F .281(The bash beha)5.281 F .28
(vior is a compromise between)-.2 F .116
(the csh principle of startup \214les with \214x)72 338.4 R .116(ed names e)
-.15 F -.15(xe)-.15 G .116(cuted for each shell and the sh `).15 F
(`minimalist')-.74 E 2.616('b)-.74 G(eha)472.26 338.4 Q(vior)-.2 E(.)-.55 E
2.956(An interacti)72 350.4 R 3.256 -.15(ve i)-.25 H 2.956
(nstance of bash started as a login shell reads and e).15 F -.15(xe)-.15 G
(cutes).15 E/F2 10/Times-Italic@0 SF(~/.bash_pr)5.455 E(o\214le)-.45 E F0 2.955
(\(the \214le)7.121 F F2(.bash_pr)72 362.4 Q(o\214le)-.45 E F0 .835
(in the user')5 F 3.335(sh)-.55 G .835(ome directory\), if it e)187.385 362.4 R
3.335(xists. An)-.15 F(interacti)3.335 E 1.135 -.15(ve n)-.25 H .835
(on-login shell reads and e).15 F -.15(xe)-.15 G(cutes).15 E F2(~/.bashr)72
374.4 Q(c)-.37 E F0 5.538(.A)1.666 G(non-interacti)127.422 374.4 Q .838 -.15
(ve s)-.25 H .538(hell \(one be).15 F .538(gun to e)-.15 F -.15(xe)-.15 G .538
(cute a shell script, for e).15 F .537(xample\) reads no \214x)-.15 F .537
(ed startup)-.15 F .139(\214le, b)72 386.4 R .139(ut uses the v)-.2 F .139
(alue of the v)-.25 F(ariable)-.25 E F1(ENV)2.639 E F0 2.639(,i)C 2.639(fs)
253.361 386.4 S .139(et, as the name of a startup \214le.)263.22 386.4 R .139
(The ksh practice of reading)5.139 F F1($ENV)72 398.4 Q F0 .69(for e)3.19 F
-.15(ve)-.25 G .69(ry shell, with the accompan).15 F .689(ying dif)-.15 F .689
(\214culty of de\214ning the proper v)-.25 F .689(ariables and functions for)
-.25 F(interacti)72 410.4 Q .946 -.15(ve a)-.25 H .646(nd non-interacti).15 F
.946 -.15(ve s)-.25 H .646(hells or ha).15 F .646
(ving the \214le read only for interacti)-.2 F .946 -.15(ve s)-.25 H .646
(hells, w).15 F .646(as considered too)-.1 F(comple)72 422.4 Q(x.)-.15 E F1 2.5
(4.3.2. New)72 446.4 R(Builtin Commands)2.5 E F0 1.119(There are a fe)97 462 R
3.619(wb)-.25 G 1.118(uiltins which are ne)170.986 462 R 3.618(wo)-.25 G 3.618
(rh)268.528 462 S -2.25 -.2(av e)280.476 462 T 1.118(been e)3.818 F 1.118
(xtended in bash.)-.15 F(The)6.118 E F1(enable)3.618 E F0 -.2(bu)3.618 G 1.118
(iltin allo).2 F(ws)-.25 E -.2(bu)72 474 S .736
(iltin commands to be turned on and of).2 F 3.236(fa)-.25 G(rbitrarily)250.198
474 Q 5.736(.T)-.65 G 3.237(ou)298.644 474 S .737(se the v)311.881 474 R .737
(ersion of)-.15 F F2(ec)3.237 E(ho)-.15 E F0 .737(found in a user')4.903 F
3.237(ss)-.55 G(earch)482.35 474 Q .013(path rather than the bash b)72 486 R
(uiltin,)-.2 E/F3 10/Courier@0 SF .013(enable -n echo)2.513 F F0(suf)2.513 E
2.513(\214ces. The)-.25 F F1(help)2.513 E F0 -.2(bu)2.513 G .013(iltin pro).2 F
.013(vides quick synopses of)-.15 F 1.382(the shell f)72 498 R 1.382
(acilities without requiring access to a manual page.)-.1 F F1(Builtin)6.382 E
F0 1.383(is similar to)3.882 F F1(command)3.883 E F0 1.383(in that it)3.883 F
.342(bypasses shell functions and directly e)72 510 R -.15(xe)-.15 G .342
(cutes b).15 F .342(uiltin commands.)-.2 F .342
(Access to a csh-style stack of directories)5.342 F .072(is pro)72 522 R .073
(vided via the)-.15 F F1(pushd)2.573 E F0(,)A F1(popd)2.573 E F0 2.573(,a)C(nd)
211.197 522 Q F1(dirs)2.573 E F0 -.2(bu)2.573 G(iltins.).2 E F1(Pushd)5.073 E
F0(and)2.573 E F1(popd)2.573 E F0 .073(insert and remo)2.573 F .373 -.15(ve d)
-.15 H .073(irectories from the).15 F .094(stack, respecti)72 534 R -.15(ve)
-.25 G(ly).15 E 2.594(,a)-.65 G(nd)154.448 534 Q F1(dirs)2.594 E F0 .094
(lists the stack contents.The)2.594 F F1(suspend)2.594 E F0 .094
(command will stop the shell process when)2.594 F 1.329(job control is acti)72
546 R -.15(ve)-.25 G 3.829(;m).15 G 1.329(ost other shells do not allo)169.136
546 R 3.829(wt)-.25 G(hemselv)294.64 546 Q 1.33(es to be stopped lik)-.15 F
3.83(et)-.1 G(hat.)421.31 546 Q F1 -.74(Ty)6.33 G(pe,).74 E F0 1.33(the bash)
3.83 F(answer to)72 558 Q F1(which)2.5 E F0(and)2.5 E F1(whence,)2.5 E F0(sho)
2.5 E(ws what will happen when a w)-.25 E(ord is typed as a command:)-.1 E F3 6
($t)97 576 S(ype export)115 576 Q(export is a shell builtin)97 588 Q 6($t)97
600 S(ype -t export)115 600 Q(builtin)97 612 Q 6($t)97 624 S(ype bash)115 624 Q
(bash is /bin/bash)97 636 Q 6($t)97 648 S(ype cd)115 648 Q(cd is a function)97
660 Q(cd \(\))97 672 Q({)97 684 Q(builtin cd "$@" && xtitle $HOST: $PWD)121 696
Q(})97 708 Q EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-7-)279.67 48 S -1.11(Va)72 84 S .682
(rious modes tell what a command w)1.11 F .681(ord is \(reserv)-.1 F .681(ed w)
-.15 F .681(ord, alias, function, b)-.1 F .681(uiltin, or \214le\) or which v)
-.2 F(er)-.15 E(-)-.2 E 1.15(sion of a command will be e)72 96 R -.15(xe)-.15 G
1.15(cuted based on a user').15 F 3.65(ss)-.55 G 1.15(earch path.)305.7 96 R
1.15(Some of this functionality has been)6.15 F
(adopted by POSIX.2 and folded into the)72 108 Q/F1 10/Times-Bold@0 SF(command)
2.5 E F0(utility)2.5 E(.)-.65 E F1 2.5(4.3.3. Editing)72 132 R(and Completion)
2.5 E F0 .682(One area in which bash shines is command line editing.)97 147.6 R
.682(Bash uses the)5.682 F/F2 10/Times-Italic@0 SF -.37(re)3.182 G(adline).37 E
F0 .682(library to read and)4.848 F .102(edit lines when interacti)72 159.6 R
-.15(ve)-.25 G 5.102(.R).15 G .103(eadline is a po)191.438 159.6 R .103
(werful and \215e)-.25 F .103(xible input f)-.15 F .103
(acility that a user can con\214gure to his)-.1 F 2.506(tastes. It)72 171.6 R
(allo)2.506 E .006(ws lines to be edited using either emacs or vi commands, wh\
ere those commands are appropri-)-.25 F 2.994(ate. The)72 183.6 R .494
(full capability of emacs is not present \255 there is no w)2.994 F .495
(ay to e)-.1 F -.15(xe)-.15 G .495(cute a named command with M-x,).15 F .222
(for instance \255 b)72 195.6 R .222(ut the e)-.2 F .222
(xisting commands are more than adequate.)-.15 F .221
(The vi mode is compliant with the com-)5.222 F
(mand line editing standardized by POSIX.2.)72 207.6 Q 1.69
(Readline is fully customizable.)97 223.2 R 1.691
(In addition to the basic commands and k)6.69 F 1.991 -.15(ey b)-.1 H 1.691
(indings, the library).15 F(allo)72 235.2 Q .83
(ws users to de\214ne additional k)-.25 F 1.13 -.15(ey b)-.1 H .83
(indings using a startup \214le.).15 F(The)5.83 E F2(inputr)3.329 E(c)-.37 E F0
.829(\214le, which def)4.995 F .829(aults to the)-.1 F(\214le)72 247.2 Q F2
(~/.inputr)4.287 E(c)-.37 E F0 4.287(,i)1.666 G 4.287(sr)137.43 247.2 S 1.788(\
ead each time readline initializes, permitting users to maintain a consistent \
interf)148.937 247.2 R(ace)-.1 E .547(across a set of programs.)72 259.2 R .546
(Readline includes an e)5.546 F .546(xtensible interf)-.15 F .546
(ace, so each program using the library can)-.1 F .23(add its o)72 271.2 R .23
(wn bindable commands and program-speci\214c k)-.25 F .531 -.15(ey b)-.1 H
2.731(indings. Bash).15 F .231(uses this f)2.731 F .231
(acility to add bindings)-.1 F(that perform history e)72 283.2 Q
(xpansion or shell w)-.15 E(ord e)-.1 E(xpansions on the current input line.)
-.15 E .707(Readline interprets a number of v)97 298.8 R .706
(ariables which further tune its beha)-.25 F(vior)-.2 E 5.706(.V)-.55 G .706
(ariables e)408.432 298.8 R .706(xist to control)-.15 F .157
(whether or not eight-bit characters are directly read as input or con)72 310.8
R -.15(ve)-.4 G .158(rted to meta-pre\214x).15 F .158(ed k)-.15 F .458 -.15
(ey s)-.1 H .158(equences \(a).15 F(meta-pre\214x)72 322.8 Q 1.575(ed k)-.15 F
1.875 -.15(ey s)-.1 H 1.575
(equence consists of the character with the eighth bit zeroed, preceded by the)
.15 F F2(meta-)4.074 E(pr)72 334.8 Q(e\214x)-.37 E F0(character)4.45 E 2.784
(,u)-.4 G .284(sually escape, which selects an alternate k)145.374 334.8 R -.15
(ey)-.1 G .285(map\), to decide whether to output characters).15 F .485
(with the eighth bit set directly or as a meta-pre\214x)72 346.8 R .485(ed k)
-.15 F .784 -.15(ey s)-.1 H .484(equence, whether or not to wrap to a ne).15 F
2.984(ws)-.25 G(creen)482.35 346.8 Q .157
(line when a line being edited is longer than the screen width, the k)72 358.8
R -.15(ey)-.1 G .158(map to which subsequent k).15 F .458 -.15(ey b)-.1 H
(indings).15 E .531(should apply)72 370.8 R 3.031(,o)-.65 G 3.031(re)133.802
370.8 S -.15(ve)144.353 370.8 S 3.031(nw).15 G .531
(hat happens when readline w)168.894 370.8 R .531(ants to ring the terminal')
-.1 F 3.03(sb)-.55 G 3.03(ell. All)399.37 370.8 R .53(of these v)3.03 F
(ariables)-.25 E(can be set in the inputrc \214le.)72 382.8 Q .284
(The startup \214le understands a set of C preprocessor)97 398.4 R(-lik)-.2 E
2.785(ec)-.1 G .285(onditional constructs which allo)329.49 398.4 R 2.785(wv)
-.25 G(ariables)472.9 398.4 Q .12(or k)72 410.4 R .42 -.15(ey b)-.1 H .119(ind\
ings to be assigned based on the application using readline, the terminal curr\
ently being used, or).15 F .316(the editing mode.)72 422.4 R .317
(Users can add program-speci\214c bindings to mak)5.317 F 2.817(et)-.1 G .317
(heir li)352.808 422.4 R -.15(ve)-.25 G 2.817(se).15 G 2.817(asier: here)
396.922 422.4 R .317(are bindings to)2.817 F(edit the v)72 434.4 Q(alue of)-.25
E F1 -.74(PA)2.5 G(TH)-.21 E F0(and double-quote the current or pre)2.5 E
(vious w)-.25 E(ord:)-.1 E/F3 10/Courier@0 SF 6(#M)97 452.4 S
(acros that are convenient for shell interaction)115 452.4 Q($if Bash)97 464.4
Q 6(#e)97 476.4 S(dit the path)115 476.4 Q
("\\C-xp": "PATH=${PATH}\\e\\C-e\\C-a\\ef\\C-f")97 488.4 Q 6(#p)97 500.4 S
(repare to type a quoted word -- insert open and close double quotes)115 500.4
Q 6(#a)97 512.4 S(nd move to just after the open quote)115 512.4 Q
("\\C-x\\"": "\\"\\"\\C-b")97 524.4 Q 6(#Q)97 536.4 S
(uote the current or previous word)115 536.4 Q("\\C-xq": "\\eb\\"\\ef\\"")97
548.4 Q($endif)97 560.4 Q F0 .322(There is a readline command to re-read the \
\214le, so users can edit the \214le, change some bindings, and be)72 582 R
(gin)-.15 E(to use them almost immediately)72 594 Q(.)-.65 E .851
(Bash implements the)97 609.6 R F1(bind)3.351 E F0 -.2(bu)3.351 G .851
(iltin for more dyamic control of readline than the startup \214le permits.).2
F F1(Bind)72 621.6 Q F0 .167(is used in se)2.667 F -.15(ve)-.25 G .167(ral w)
.15 F 2.667(ays. In)-.1 F F2(list)2.667 E F0 .167
(mode, it can display the current k)4.333 F .466 -.15(ey b)-.1 H .166
(indings, list all the readline edit-).15 F .149(ing directi)72 633.6 R -.15
(ve)-.25 G 2.649(sa).15 G -.25(va)132.798 633.6 S .149
(ilable for binding, list which k).25 F -.15(ey)-.1 G 2.649(si).15 G -1.9 -.4
(nv o)282.352 633.6 T .349 -.1(ke a g).4 H -2.15 -.25(iv e).1 H 2.65(nd).25 G
(irecti)345.3 633.6 Q -.15(ve)-.25 G 2.65(,o).15 G 2.65(ro)385.04 633.6 S .15
(utput the current set of k)396.02 633.6 R -.15(ey)-.1 G .526(bindings in a fo\
rmat that can be incorporated directly into an inputrc \214le.)72 645.6 R(In)
5.526 E F2(batc)3.026 E(h)-.15 E F0 .526(mode, it reads a series)4.692 F .71
(of k)72 657.6 R 1.01 -.15(ey b)-.1 H .71
(indings directly from a \214le and passes them to readline.).15 F .71
(In its most common usage,)5.71 F F1(bind)3.21 E F0(tak)3.21 E .71(es a)-.1 F
.534(single string and passes it directly to readline, which interprets the li\
ne as if it had just been read from the)72 669.6 R(inputrc \214le.)72 681.6 Q
(Both k)5 E .3 -.15(ey b)-.1 H(indings and v).15 E
(ariable assignments can appear in the string gi)-.25 E -.15(ve)-.25 G 2.5(nt)
.15 G(o)424.4 681.6 Q F1(bind)2.5 E F0(.)A .401(The readline library also pro)
97 697.2 R .402(vides an interf)-.15 F .402(ace for)-.1 F F2(wor)2.902 E 2.902
(dc)-.37 G(ompletion)328.546 697.2 Q F0 5.402(.W)C .402(hen the)385.888 697.2 R
F2(completion)2.902 E F0(character)4.568 E 1.261(\(usually T)72 709.2 R 1.261
(AB\) is typed, readline looks at the w)-.93 F 1.26
(ord currently being entered and computes the set of \214le-)-.1 F .523
(names of which the current w)72 721.2 R .523(ord is a v)-.1 F .523
(alid pre\214x.)-.25 F .524
(If there is only one possible completion, the rest of the)5.523 F EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-8-)279.67 48 S .358
(characters are inserted directly)72 84 R 2.858(,o)-.65 G .358(therwise the co\
mmon pre\214x of the set of \214lenames is added to the current)205.232 84 R
-.1(wo)72 96 S 3.199(rd. A).1 F .699(second T)3.199 F .699(AB character entere\
d immediately after a non-unique completion causes readline to list)-.93 F
1.814(the possible completions; there is an option to ha)72 108 R 2.113 -.15
(ve t)-.2 H 1.813(he list displayed immediately).15 F 6.813(.R)-.65 G 1.813
(eadline pro)436.517 108 R(vides)-.15 E .482
(hooks so that applications can pro)72 120 R .482
(vide speci\214c types of completion before the def)-.15 F .483
(ault \214lename completion)-.1 F .132(is attempted.)72 132 R .132
(This is quite \215e)5.132 F .132(xible, though it is not completely user)-.15
F 2.632(-programmable. Bash,)-.2 F .132(for e)2.632 F .132(xample, can)-.15 F
.37(complete \214lenames, command names \(including aliases, b)72 144 R .37
(uiltins, shell reserv)-.2 F .37(ed w)-.15 F .37(ords, shell functions, and)-.1
F -.15(exe)72 156 S .424(cutables found in the \214le system\), shell v).15 F
.424(ariables, usernames, and hostnames.)-.25 F .423
(It uses a set of heuristics)5.424 F(that, while not perfect, is generally qui\
te good at determining what type of completion to attempt.)72 168 Q/F1 10
/Times-Bold@0 SF 2.5(4.3.4. History)72 192 R F0 .255
(Access to the list of commands pre)97 207.6 R .255(viously entered \(the)-.25
F/F2 10/Times-Italic@0 SF .255(command history)2.755 F F0 2.756(\)i)C 2.756(sp)
399.236 207.6 S(ro)410.882 207.6 Q .256(vided jointly by bash)-.15 F .095
(and the readline library)72 219.6 R 5.094(.B)-.65 G .094(ash pro)178.928 219.6
R .094(vides v)-.15 F .094(ariables \()-.25 F F1(HISTFILE)A F0(,)A F1(HISTSIZE)
2.594 E F0 2.594(,a)C(nd)382.068 219.6 Q F1(HISTCONTR)2.594 E(OL)-.3 E F0 2.594
(\)a)C .094(nd the)479.186 219.6 R F1(history)72 231.6 Q F0(and)2.825 E F1(fc)
2.825 E F0 -.2(bu)2.825 G .325(iltins to manipulate the history list.).2 F .325
(The v)5.325 F .325(alue of)-.25 F F1(HISTFILE)2.825 E F0 .326
(specifes the \214le where bash)2.826 F .128(writes the command history on e)72
243.6 R .128(xit and reads it on startup.)-.15 F F1(HISTSIZE)5.128 E F0 .128
(is used to limit the number of com-)2.628 F .346(mands sa)72 255.6 R -.15(ve)
-.2 G 2.846(di).15 G 2.846(nt)129.002 255.6 S .346(he history)139.628 255.6 R
(.)-.65 E F1(HISTCONTR)5.346 E(OL)-.3 E F0(pro)2.846 E .346
(vides a crude form of control o)-.15 F -.15(ve)-.15 G 2.846(rw).15 G .346
(hich commands are)425.548 255.6 R(sa)72 267.6 Q -.15(ve)-.2 G 2.905(do).15 G
2.905(nt)102.325 267.6 S .405(he history list: a v)113.01 267.6 R .405(alue of)
-.25 F F2(ignor)2.905 E(espace)-.37 E F0 .405(means to not sa)4.571 F .705 -.15
(ve c)-.2 H .405(ommands which be).15 F .405(gin with a space; a)-.15 F -.25
(va)72 279.6 S .339(lue of).25 F F2(ignor)2.839 E(edups)-.37 E F0 .339
(means to not sa)4.505 F .64 -.15(ve c)-.2 H .34
(ommands identical to the last command sa).15 F -.15(ve)-.2 G(d.).15 E F1
(HISTCONTR)5.34 E(OL)-.3 E F0 -.1(wa)72 291.6 S 3.15(sn).1 G(amed)95.6 291.6 Q
F1(history_contr)3.15 E(ol)-.18 E F0 .65(in earlier v)3.15 F .649
(ersions of bash; the old name is still accepted for backw)-.15 F .649
(ards com-)-.1 F(patibility)72 303.6 Q 5.723(.T)-.65 G(he)121.803 303.6 Q F1
(history)3.223 E F0 .724(command can read or write \214les containing the hist\
ory list and display the current)3.223 F .895(list contents.)72 315.6 R(The)
5.895 E F1(fc)3.395 E F0 -.2(bu)3.395 G .895
(iltin, adopted from POSIX.2 and the K).2 F .894(orn Shell, allo)-.35 F .894
(ws display and re-e)-.25 F -.15(xe)-.15 G(cution,).15 E .461
(with optional editing, of commands from the history list.)72 327.6 R .462
(The readline library of)5.462 F .462(fers a set of commands to)-.25 F .657(se\
arch the history list for a portion of the current input line or a string type\
d by the user)72 339.6 R 5.657(.F)-.55 G(inally)445.836 339.6 Q 3.157(,t)-.65 G
(he)476.403 339.6 Q F2(his-)3.157 E(tory)72 351.6 Q F0(library)4.196 E 2.53(,g)
-.65 G .03(enerally incorporated directly into the readline library)128.346
351.6 R 2.53(,i)-.65 G .03(mplements a f)350.636 351.6 R .031
(acility for history recall,)-.1 F -.15(ex)72 363.6 S .594(pansion, and re-e)
.15 F -.15(xe)-.15 G .594(cution of pre).15 F .594(vious commands v)-.25 F .594
(ery similar to csh \(`)-.15 F .593(`bang history')-.74 F .593
(', so called because)-.74 F(the e)72 375.6 Q
(xclamation point introduces a history substitution\):)-.15 E/F3 10/Courier@0
SF 6($e)97 393.6 S(cho a b c d e)115 393.6 Q 6(abcde)97 405.6 S 6($!)97 417.6 S
6(!fghi)115 417.6 S(echo a b c d e f g h i)97 429.6 Q 6(abcdefghi)97 441.6 S 6
($!)97 453.6 S(-2)115 453.6 Q(echo a b c d e)97 465.6 Q 6(abcde)97 477.6 S 6
($e)97 489.6 S(cho !-2:1-4)115 489.6 Q(echo a b c d)97 501.6 Q 6(abcd)97 513.6
S F0 1.456(The command history is only sa)72 535.2 R -.15(ve)-.2 G 3.957(dw).15
G 1.457(hen the shell is interacti)232.599 535.2 R -.15(ve)-.25 G 3.957(,s).15
G 3.957(oi)352.804 535.2 S 3.957(ti)364.541 535.2 S 3.957(sn)374.058 535.2 S
1.457(ot a)386.905 535.2 R -.25(va)-.2 G 1.457(ilable for use by shell).25 F
(scripts.)72 547.2 Q F1 2.5(4.3.5. New)72 571.2 R(Shell V)2.5 E(ariables)-.92 E
F0 .701(There are a number of con)97 586.8 R -.15(ve)-.4 G .701(nience v).15 F
.701(ariables that bash interprets to mak)-.25 F 3.2(el)-.1 G .7(ife easier)
402.76 586.8 R 5.7(.T)-.55 G .7(hese include)453.59 586.8 R F1(FIGNORE)72 598.8
Q F0 3.973(,w)C 1.473(hich is a set of \214lename suf)132.363 598.8 R<8c78>-.25
E 1.474(es identifying \214les to e)-.15 F 1.474
(xclude when completing \214lenames;)-.15 F F1(HOSTTYPE)72 610.8 Q F0 3.03(,w)C
.53(hich is automatically set to a string describing the type of hardw)139.21
610.8 R .53(are on which bash is cur)-.1 F(-)-.2 E .76(rently e)72 622.8 R -.15
(xe)-.15 G(cuting;).15 E F1(OSTYPE)3.26 E F0 3.26(,t)C 3.26(ow)191.76 622.8 S
.76(hich bash assigns a v)207.24 622.8 R .761(alue that identi\214es the v)-.25
F .761(ersion of)-.15 F/F4 9/Times-Roman@0 SF(UNIX)3.261 E F0(it')3.261 E 3.261
(sr)-.55 G(unning)476.22 622.8 Q 1.354
(on \(great for putting architecture-speci\214c binary directories into the)72
634.8 R F1 -.74(PA)3.854 G(TH)-.21 E F0 1.354(\); and)B F1(IGNOREEOF)3.854 E F0
3.854(,w)C(hose)485.67 634.8 Q -.25(va)72 646.8 S .062
(lue indicates the number of consecuti).25 F .362 -.15(ve E)-.25 H .062
(OF characters that an interacti).15 F .362 -.15(ve s)-.25 H .062
(hell will read before e).15 F .062(xiting \255)-.15 F .114(an easy w)72 658.8
R .113(ay to k)-.1 F .113(eep yourself from being logged out accidentally)-.1 F
5.113(.T)-.65 G(he)344.285 658.8 Q F1(auto_r)2.613 E(esume)-.18 E F0 -.25(va)
2.613 G .113(riable alters the w).25 F(ay)-.1 E .409
(the shell treats simple command names: if job control is acti)72 670.8 R -.15
(ve)-.25 G 2.909(,a).15 G .409(nd this v)335.516 670.8 R .409
(ariable is set, single-w)-.25 F .409(ord simple)-.1 F .17(commands without re\
directions cause the shell to \214rst look for a suspended job with that name \
before start-)72 682.8 R(ing a ne)72 694.8 Q 2.5(wp)-.25 G(rocess.)118.13 694.8
Q EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-9-)279.67 48 S/F1 10/Times-Bold@0 SF 2.5
(4.3.6. Brace)72 84 R(Expansion)2.5 E F0 .653(Since sh of)97 99.6 R .653
(fers no con)-.25 F -.15(ve)-.4 G .653(nient w).15 F .653
(ay to generate arbitrary strings that share a common pre\214x or suf)-.1 F
<8c78>-.25 E 1.893(\(pathname e)72 111.6 R 1.893
(xpansion requires that the \214lenames e)-.15 F 1.892(xist\), bash implements)
-.15 F/F2 10/Times-Italic@0 SF(br)4.392 E 1.892(ace e)-.15 F(xpansion)-.2 E F0
4.392(,ac)C(apability)469 111.6 Q(pick)72 123.6 Q .496(ed up from csh.)-.1 F
.496(Brace e)5.496 F .496(xpansion is similar to pathname e)-.15 F .496
(xpansion, b)-.15 F .497(ut the strings generated need not)-.2 F 1.107
(correspond to e)72 135.6 R 1.107(xisting \214les.)-.15 F 3.607(Ab)6.107 G
1.107(race e)207.655 135.6 R 1.107(xpression consists of an optional)-.15 F F2
(pr)3.606 E(eamble)-.37 E F0 3.606(,f)1.666 G(ollo)419.286 135.6 Q 1.106
(wed by a pair of)-.25 F 2.809
(braces enclosing a series of comma-separated strings, and an optional)72 147.6
R F2(postamble)5.31 E F0 7.81(.T)1.666 G 2.81(he preamble is)440.06 147.6 R(pr\
epended to each string within the braces, and the postamble is then appended t\
o each resulting string:)72 159.6 Q/F3 10/Courier@0 SF 6($e)97 177.6 S
(cho a{d,c,b}e)115 177.6 Q(ade ace abe)97 189.6 Q F1 2.5(4.3.7. Pr)72 219.6 R
(ompt Customization)-.18 E F0 .077(One of the more popular interacti)97 235.2 R
.376 -.15(ve f)-.25 H .076(eatures that bash pro).15 F .076
(vides is the ability to customize the prompt.)-.15 F(Both)72 247.2 Q F1(PS1)
3.305 E F0(and)3.305 E F1(PS2,)3.305 E F0 .805
(the primary and secondary prompts, are e)3.305 F .805
(xpanded before being displayed.)-.15 F -.15(Pa)5.805 G(rameter).15 E .324
(and v)72 259.2 R .324(ariable e)-.25 F .324
(xpansion is performed when the prompt string is e)-.15 F .323
(xpanded, so the v)-.15 F .323(alue of an)-.25 F 2.823(ys)-.15 G .323(hell v)
454.217 259.2 R(ariable)-.25 E .728(can be put into the prompt \(e.g.,)72 271.2
R F1($SHL)3.228 E(VL)-.92 E F0 3.228(,w)C .728(hich indicates ho)258.564 271.2
R 3.228(wd)-.25 G .729(eeply the current shell is nested\).)342.988 271.2 R
(Bash)5.729 E 1.895
(specially interprets characters in the prompt string preceded by a backslash.)
72 283.2 R 1.895(Some of these backslash)6.895 F .874
(escapes are replaced with the current time, the date, the current w)72 295.2 R
.874(orking directory)-.1 F 3.374(,t)-.65 G .874(he username, and the)416.958
295.2 R .781(command number or history number of the command being entered.)72
307.2 R .78(There is e)5.781 F -.15(ve)-.25 G 3.28(nab).15 G .78
(ackslash escape to)429.13 307.2 R .007
(cause the shell to change its prompt when running as root after an)72 319.2 R
F2(su)2.507 E F0 5.007(.B)C .008(efore printing each primary prompt,)360.388
319.2 R .27(bash e)72 331.2 R .27(xpands the v)-.15 F(ariable)-.25 E F1(PR)2.77
E(OMPT_COMMAND)-.3 E F0 .269(and, if it has a v)2.77 F .269(alue, e)-.25 F -.15
(xe)-.15 G .269(cutes the e).15 F .269(xpanded v)-.15 F .269(alue as a)-.25 F
.04(command, allo)72 343.2 R .041(wing additional prompt customization.)-.25 F
-.15(Fo)5.041 G 2.541(re).15 G .041
(xample, this assignment causes the current user)311.964 343.2 R(,)-.4 E .99
(the current host, the time, the last component of the current w)72 355.2 R
.989(orking directory)-.1 F 3.489(,t)-.65 G .989(he le)402.954 355.2 R -.15(ve)
-.25 G 3.489(lo).15 G 3.489(fs)443.412 355.2 S .989(hell nesting,)454.121 355.2
R(and the history number of the current command to be embedded into the primar\
y prompt:)72 367.2 Q F3 6($P)97 385.2 S
(S1='\\u@\\h [\\t] \\W\($SHLVL:\\!\)\\$ ')115 385.2 Q
(chet@odin [21:03:44] documentation\(2:636\)$ cd ..)97 397.2 Q
(chet@odin [21:03:54] src\(2:637\)$)97 409.2 Q F0 .619
(The string being assigned is surrounded by single quotes so that if it is e)72
430.8 R(xported,)-.15 E F1(SHL)3.119 E(VL)-.92 E F0 .619(will be updated)3.119
F(by a child shell:)72 442.8 Q F3
(chet@odin [21:13:35] src\(2:638\)$ export PS1)97 460.8 Q
(chet@odin [21:17:40] src\(2:639\)$ bash)97 472.8 Q
(chet@odin [21:17:46] src\(3:696\)$)97 484.8 Q F0(The)72 506.4 Q F1(\\$)2.5 E
F0(escape is displayed as `)2.5 E(`)-.74 E F1($)A F0 1.48 -.74('' w)D
(hen running as a normal user).74 E 2.5(,b)-.4 G(ut as `)342.08 506.4 Q(`)-.74
E F1(#)A F0 1.48 -.74('' w)D(hen running as root.).74 E F1 2.5(4.3.8. POSIX)72
530.4 R(Mode)2.5 E F0 .46(Although bash is intended to be POSIX.2 compliant, t\
here are areas in which the def)97 546 R .46(ault beha)-.1 F .46(vior is)-.2 F
1.168(not compatible with the standard.)72 558 R -.15(Fo)6.169 G 3.669(ru).15 G
1.169(sers who wish to operate in a strict POSIX.2 en)238.85 558 R 1.169
(vironment, bash)-.4 F .61(implements a)72 570 R F2 .61(POSIX mode)3.11 F F0
5.61(.W)C .61(hen this mode is acti)199.42 570 R -.15(ve)-.25 G 3.109(,b).15 G
.609(ash modi\214es its def)303.727 570 R .609(ault operation where it dif)-.1
F(fers)-.25 E .066(from POSIX.2 to match the standard.)72 582 R .067
(POSIX mode is entered when bash is started with the)5.066 F F1 .067(-o posix)
2.567 F F0(option)2.567 E .382(or when)72 594 R F1 .382(set -o posix)2.882 F F0
.381(is e)2.881 F -.15(xe)-.15 G 2.881(cuted. F).15 F .381
(or compatibility with other GNU softw)-.15 F .381
(are that attempts to be POSIX.2)-.1 F 5.752
(compliant, bash also enters POSIX mode if either of the v)72 606 R(ariables)
-.25 E F1(POSIX_PED)8.253 E(ANTIC)-.35 E F0(or)8.253 E F1(POSIXL)72 618 Q
(Y_CORRECT)-.92 E F0 1.179(is set when bash is started or assigned a v)3.679 F
1.178(alue during e)-.25 F -.15(xe)-.15 G 3.678(cution. When).15 F 1.178
(bash is)3.678 F .218(started in POSIX mode, for e)72 630 R .218(xample, the)
-.15 F F1(kill)2.718 E F0 -.2(bu)2.718 G(iltin').2 E(s)-.55 E F1<ad6c>2.718 E
F0 .218(option beha)2.718 F -.15(ve)-.2 G 2.718(sd).15 G(if)370.166 630 Q .219
(ferently: it lists the names of all)-.25 F 1.084(signals on a single line sep\
arated by spaces, rather than listing the signal names and their corresponding)
72 642 R(numbers.)72 654 Q .865(Some of the def)97 669.6 R .865(ault bash beha)
-.1 F .865(vior dif)-.2 F .865
(fers from other shells as a result of the POSIX standard.)-.25 F -.15(Fo)5.866
G(r).15 E 1.16(instance, bash includes the)72 681.6 R F1(!)3.66 E F0(reserv)
6.16 E 1.16(ed w)-.15 F 1.16(ord to ne)-.1 F -.05(ga)-.15 G 1.16
(te the return status of a pipeline because it has been).05 F
(de\214ned by POSIX.2.)72 693.6 Q
(Neither sh nor ksh has implemented that feature.)5 E EP
%%Page: 10 10
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(0-)288 48 S/F1 10/Times-Bold@0
SF 2.5(4.4. F)72 84 R(eatur)-.25 E(es Unique to ksh)-.18 E F0 .177
(Ksh includes a number of features not in the currently-released v)97 99.6 R
.178(ersion of bash, v)-.15 F .178(ersion 1.14.)-.15 F(Unless)5.178 E .822
(noted, none of these features is in the POSIX.2 standard.)72 111.6 R .821
(Where appropriate the equi)5.821 F -.25(va)-.25 G .821(lent bash features).25
F(are noted.)72 123.6 Q F1 2.5(4.4.1. The)72 147.6 R(ksh Language)2.5 E F0
2.955(An)97 163.2 S .955 -.25(ew c)112.175 163.2 T .455(ompound command folds)
.25 F F1(test)2.955 E F0 .456(into the ksh language, delimited by the reserv)
2.955 F .456(ed w)-.15 F(ords)-.1 E F1([[)2.956 E F0(and)2.956 E F1(]])72 175.2
Q F0 5.726(.T)C .726(he syntax is identical to)92.996 175.2 R F1(test)3.225 E
F0 .725(with a fe)3.225 F 3.225(wc)-.25 G .725
(hanges: for instance, instead of)262.855 175.2 R F1<ad61>3.225 E F0(and)3.225
E F1<ad6f>3.225 E F0(,)A F1(&&)3.225 E F0(and)3.225 E/F2 10/Symbol SF<efef>
3.225 E F0(are)3.225 E 3.32(used. The)72 187.2 R -.1(wo)3.32 G .82(rds between)
.1 F F1([[)3.32 E F0(and)3.32 E F1(]])3.32 E F0 .82(are not processed for w)
3.32 F .82(ord splitting or \214lename generation.)-.1 F .82(The ne)5.82 F(w)
-.25 E .926
(command does pattern matching as well as string comparison, a la the)72 199.2
R F1(case)3.425 E F0 3.425(command. This)3.425 F(ne)3.425 E 3.425(wc)-.25 G
(ontrol)480.11 199.2 Q .165(structure does ha)72 211.2 R .465 -.15(ve t)-.2 H
.165(he adv).15 F .166(antage of reducing common ar)-.25 F .166
(gument problems encountered using test \(e.g.)-.18 F F1(test)2.666 E
("$string")72 223.2 Q F0 2.928(,w)C(here)125.748 223.2 Q F1($string)2.928 E F0
-.15(ex)2.928 G .428(pands to).15 F F1<ad66>2.928 E F0 .428(\), b)B .428
(ut at the cost of bloating the language.)-.2 F .427(The POSIX.2 test algo-)
5.427 F 2.752(rithm that bash uses, along with some programmer care, alle)72
235.2 R 2.752(viates those problems in a backw)-.25 F(ards-)-.1 E .854
(compatible w)72 247.2 R .853(ay with no additions to the language.)-.1 F .853
(The one capability of)5.853 F F1 .853([[ ]])3.353 F F0 .853(not a)3.353 F -.25
(va)-.2 G .853(ilable in bash is its).25 F(ability to test whether an indi)72
259.2 Q(vidual)-.25 E F1(set \255o)2.5 E F0(option is turned on or of)2.5 E(f.)
-.25 E .339(Other parts of the ksh language are not common to bash.)97 274.8 R
(The)5.34 E F1(\(\(...\)\))2.84 E F0(operator)5.34 E 2.84(,e)-.4 G(qui)419.33
274.8 Q -.25(va)-.25 G .34(lent to).25 F F1 .34(let "...")2.84 F F0(,)A .197
(is unique to ksh, as are the concept of co-processes and the)72 286.8 R F1
(time)2.697 E F0 -.1(ke)2.696 G(yw)-.05 E .196
(ord to time commands and pipelines.)-.1 F F1 2.5(4.4.2. Functions)72 310.8 R
(and Aliases)2.5 E F0 1.022(The K)97 326.4 R 1.022(orn shell has)-.35 F/F3 10
/Times-Italic@0 SF(autoloaded)3.522 E F0 3.522(functions. A)3.522 F 1.022
(function mark)3.522 F 1.022(ed as)-.1 F F3(autoload)3.522 E F0 1.022
(is not de\214ned until it is)5.188 F 1.042(\214rst e)72 338.4 R -.15(xe)-.15 G
3.542(cuted. When).15 F 1.042(such a function is e)3.542 F -.15(xe)-.15 G 1.042
(cuted, a search is made through the directories in).15 F F1(FP)3.541 E -.95
(AT)-.74 G(H).95 E F0(\(a)3.541 E .27
(colon-separated list of directories similar to)72 350.4 R F1 -.74(PA)2.77 G
(TH)-.21 E F0 2.77(\)f)C .27(or a \214le with the same name as the function.)
285.78 350.4 R .27(That \214le)5.27 F .548(is then read in as with the)72 362.4
R F1(.)3.881 E F0 .547(command; presumably the function is de\214ned therein.)
3.047 F .547(There is a pair of shell)5.547 F .886
(functions included in the bash distrib)72 374.4 R .886(ution \()-.2 F F3 -.2
(ex)C(amples/functions/autoload).2 E F0 5.886(\)t)C .886(hat pro)378.35 374.4 R
.886(vide much of this func-)-.15 F
(tionality without changing the shell itself.)72 386.4 Q .116
(Ksh functions are scoped in such a w)97 402 R .116(ay that the en)-.1 F .116
(vironment in which the)-.4 F 2.616(ya)-.15 G .116(re e)405.144 402 R -.15(xe)
-.15 G .115(cuted is closer to a).15 F .827(shell script en)72 414 R 3.327
(vironment. Bash)-.4 F .827(uses the POSIX.2 scoping rules, which mak)3.327 F
3.327(et)-.1 G .827(he function e)392.517 414 R -.15(xe)-.15 G .828(cution en)
.15 F(vi-)-.4 E 1.2(ronment an e)72 426 R 1.2(xact cop)-.15 F 3.7(yo)-.1 G 3.7
(ft)174.86 426 S 1.199(he shell en)184.67 426 R 1.199
(vironment with the replacement of the shell')-.4 F 3.699(sp)-.55 G 1.199
(ositional paramters)426.421 426 R(with the function ar)72 438 Q 2.5
(guments. K)-.18 F
(orn shell functions do not share options or traps with the in)-.35 E -.2(vo)
-.4 G(king shell.).2 E .451(Ksh has)97 453.6 R F3(tr)2.951 E(ac)-.15 E -.1(ke)
-.2 G(d).1 E F0 .452(aliases, which alias a command name to its full pathname.)
2.952 F .452(Bash has true command)5.452 F(hashing.)72 465.6 Q F1 2.5
(4.4.3. Arrays)72 489.6 R F0 .246
(Arrays are an aspect of ksh that has no real bash equi)97 505.2 R -.25(va)-.25
G 2.746(lent. The).25 F 2.746(ya)-.15 G .246(re easy to create and manipulate:)
371.42 505.2 R 1.637
(an array is created automatically by using subscript assignment \()72 517.2 R
F1(name)A F0([)A F3(inde)A(x)-.2 E F0(]=)A F1 -.1(va)C(lue).1 E F0 1.637
(\), and an)B 4.137(yv)-.15 G(ariable)476.79 517.2 Q 1.967
(may be referred to as an array)72 529.2 R 6.967(.K)-.65 G 1.967(sh arrays, ho)
219.229 529.2 R(we)-.25 E -.15(ve)-.25 G 2.767 -.4(r, h).15 H -2.25 -.2(av e).4
H(se)4.667 E -.15(ve)-.25 G 1.967(ral anno).15 F 1.967(ying limitations: the)
-.1 F 4.466(ym)-.15 G 1.966(ay be)480.654 529.2 R(inde)72 541.2 Q -.15(xe)-.15
G 3.498(do).15 G .998(nly up to 512 or 1024 elements, depending on ho)111.858
541.2 R 3.498(wt)-.25 G .999(he shell is compiled, and there is only the)
330.188 541.2 R(clumsy)72 553.2 Q F1 .223(set -A)2.723 F F0 .223
(to assign a list of v)2.723 F .223(alues sequentially)-.25 F 5.223(.D)-.65 G
.223(espite these limits, arrays are useful, if underutilized)293.31 553.2 R
(by shell programmers.)72 565.2 Q F1 2.5(4.4.4. Builtin)72 589.2 R(Commands)2.5
E F0 .112(Some of the b)97 604.8 R .112(uiltin commands ha)-.2 F .412 -.15
(ve b)-.2 H .112(een e).15 F .112(xtended or are ne)-.15 F 2.612(wi)-.25 G
2.613(nk)351.402 604.8 S 2.613(sh. The)364.015 604.8 R F1(print)2.613 E F0 -.2
(bu)2.613 G .113(iltin w).2 F .113(as included)-.1 F .242(to w)72 616.8 R .242
(ork around the incompatibilities and limitations of)-.1 F F1(echo)2.741 E F0
5.241(.T)C(he)328.234 616.8 Q F1(whence)2.741 E F0 .241(command tells what w)
2.741 F .241(ould hap-)-.1 F .418(pen if each ar)72 628.8 R .418
(gument were typed as a command name.)-.18 F(The)5.418 E F1(cd)2.919 E F0 -.2
(bu)2.919 G .419(iltin has been e).2 F .419(xtended to tak)-.15 F 2.919(eu)-.1
G 2.919(pt)470.482 628.8 S 2.919(ot)481.181 628.8 S -.1(wo)491.88 628.8 S(ar)72
640.8 Q 1.425(guments: if tw)-.18 F 3.925(oa)-.1 G -.18(rg)153.485 640.8 S
1.424(uments are supplied, the second is substituted for the \214rst in the cu\
rrent directory).18 F 2.294
(name and the shell changes to the resultant directory name.)72 652.8 R 2.295
(The ksh)7.294 F F1(trap)4.795 E F0 -.2(bu)4.795 G 2.295(iltin accepts).2 F F1
(ERR)4.795 E F0(and)4.795 E F1(DEB)72 664.8 Q(UG)-.1 E F0 .15(as trap names.)
2.65 F(The)5.15 E F1(ERR)2.65 E F0 .15(trap is e)2.65 F -.15(xe)-.15 G .15
(cuted when a command f).15 F(ails;)-.1 E F1(DEB)2.65 E(UG)-.1 E F0 .15(is e)
2.65 F -.15(xe)-.15 G .15(cuted after e).15 F -.15(ve)-.25 G(ry).15 E
(simple command.)72 676.8 Q .05(The bash distrib)97 692.4 R .05
(ution includes shell functions that implement)-.2 F F1(print)2.55 E F0(and)
2.55 E F1(whence)2.55 E F0 .05(and the e)2.55 F .05(xtensions to)-.15 F F1(cd)
72 704.4 Q F0(.)A EP
%%Page: 11 11
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(1-)288 48 S/F1 10/Times-Bold@0
SF 2.5(4.4.5. Expansion)72 84 R F0 .282(The ksh \214lename generation \()97
99.6 R/F2 10/Times-Italic@0 SF(globbing)A F0 2.782(\)f)C .282(acilities ha)
262.45 99.6 R .581 -.15(ve b)-.2 H .281(een e).15 F .281(xtended be)-.15 F .281
(yond their bash and sh coun-)-.15 F 3.68(terparts. In)72 111.6 R 1.181
(this area, ksh can be thought of as)3.681 F F2 -.4(eg)3.681 G -.37(re).4 G(p)
.37 E F0 1.181(to the bash)5.347 F F2(gr)3.681 E(ep)-.37 E F0 6.181(.K)1.666 G
1.181(sh globbing of)382.406 111.6 R 1.181(fers things lik)-.25 F(e)-.1 E 1.018
(alternation, the ability to match zero or more instances of a pattern, and th\
e ability to match e)72 123.6 R 1.018(xactly one)-.15 F(occurrence of an)72
135.6 Q 2.5(yo)-.15 G 2.5(fal)150.98 135.6 S(ist of patterns.)166.53 135.6 Q F1
2.5(4.4.6. Startup)72 159.6 R(Files)2.5 E F0 .977(Ksh and bash e)97 175.2 R
-.15(xe)-.15 G .977(cute startup \214les dif).15 F(ferently)-.25 E 5.977(.K)
-.65 G .977(sh e)297.879 175.2 R(xpands)-.15 E F1(ENV)3.478 E F0 .978
(and sources the \214le it names for)3.478 F -2.15 -.25(ev e)72 187.2 T 1.85
(ry shell.).25 F 1.85(Bash sources)6.85 F F1($ENV)4.35 E F0 1.85
(only in non-interacti)4.35 F 2.15 -.15(ve s)-.25 H 1.85(hells; interacti).15 F
2.15 -.15(ve s)-.25 H 1.85(hells source \214x).15 F 1.85(ed \214les, as)-.15 F
-.15(ex)72 199.2 S 1.285(plained in the pre).15 F 1.285(vious section.)-.25 F
1.285(The POSIX standard has speci\214ed the ksh beha)6.285 F(vior)-.2 E 3.785
(,s)-.4 G 3.785(ob)441.545 199.2 S 1.285(ash acts the)455.33 199.2 R
(same as ksh if started with the)72 211.2 Q F1(\255posix)2.5 E F0(or)2.5 E F1
(\255o posix)2.5 E F0(options.)2.5 E F1 2.5(4.4.7. History)72 235.2 R F0
(Finally)97 250.8 Q 3.372(,t)-.65 G .872(he ksh history implementation dif)
133.342 250.8 R .871(fers slightly from bash.)-.25 F .871
(Each instance of bash k)5.871 F .871(eeps the)-.1 F .633
(history list in memory and of)72 262.8 R .633(fers options to the)-.25 F F1
(history)3.133 E F0 -.2(bu)3.133 G .634
(iltin to write the list to or read it from a named).2 F 3.216(\214le. Ksh)72
274.8 R -.1(ke)3.216 G .716
(eps the history in a \214le, which it accesses each time a command is sa).1 F
-.15(ve)-.2 G 3.215(dt).15 G 3.215(oo)426.445 274.8 S 3.215(rr)439.66 274.8 S
(etrie)449.535 274.8 Q -.15(ve)-.25 G 3.215(df).15 G(rom)487.89 274.8 Q .338
(the history)72 286.8 R 5.338(.K)-.65 G .338
(sh history \214les may be shared among dif)129.246 286.8 R .338
(ferent concurrent instances of ksh, which could be a)-.25 F
(bene\214t to the user)72 298.8 Q(.)-.55 E F1 2.5(5. F)72 322.8 R(eatur)-.25 E
(es in Bash-2.0)-.18 E F0 .657(The ne)97 338.4 R .657
(xt release of bash, 2.0, will be a major o)-.15 F -.15(ve)-.15 G 3.157
(rhaul. It).15 F .656(will include man)3.157 F 3.156(yn)-.15 G 1.156 -.25(ew f)
419.532 338.4 T .656(eatures, for both).25 F .705(programming and interacti)72
350.4 R 1.005 -.15(ve u)-.25 H 3.205(se. Redundant).15 F -.15(ex)3.205 G .705
(isting functions will be remo).15 F -.15(ve)-.15 G 3.206(d. There).15 F .706
(are se)3.206 F -.15(ve)-.25 G .706(ral cases).15 F 1.34(where bash treats a v)
72 362.4 R 1.34(ariable specially to enable functionality a)-.25 F -.25(va)-.2
G 1.34(ilable another w).25 F 1.34(ay \()-.1 F F1($nolinks)A F0(vs.)3.84 E F1
1.34(set -o)3.84 F(ph)72 374.4 Q(ysical)-.15 E F0 2.5(,f)C(or e)115.19 374.4 Q
(xample\); the special treatment of the v)-.15 E(ariable name will be remo)-.25
E -.15(ve)-.15 G(d.).15 E F1 2.5(5.1. Arrays)72 398.4 R F0 .546(Bash-2.0 will \
include arrays which are a superset of those in ksh, with the size limitations\
 remo)97 414 R -.15(ve)-.15 G(d.).15 E(The)72 426 Q F1(declar)3.086 E(e)-.18 E
F0(,)A F1 -.18(re)3.086 G(adonly).18 E F0 3.086(,a)C(nd)174.768 426 Q F1
(export)3.086 E F0 -.2(bu)3.086 G .586
(iltins will accept options to specify arrays, and the).2 F F1 -.18(re)3.085 G
(ad).18 E F0 -.2(bu)3.085 G .585(iltin will).2 F(ha)72 438 Q .81 -.15(ve a)-.2
H 3.01(no).15 G .51(ption to read a list of w)110.99 438 R .51
(ords and assign them directly to an array)-.1 F 5.51(.T)-.65 G .51
(here will also be a ne)386.23 438 R 3.01(wa)-.25 G(rray)487.9 438 Q F2 .262
(compound assignment)72 450 R F0 .262(syntax a)2.762 F -.25(va)-.2 G .262
(ilable for assignment statements and the).25 F F1(declar)2.761 E(e)-.18 E F0
-.2(bu)2.761 G 2.761(iltin. This).2 F(ne)2.761 E 2.761(ws)-.25 G(yntax)481.78
450 Q .441(has the form)72 462 R F2(name)2.941 E F0(=\()A F2(value1)A F0(...)
2.941 E F2(valueN)2.941 E F0 .441(\), where each)B F2(value)2.942 E F0 .442
(has the form [)4.608 F F2(subscript)A F0(]=)A F2(string)A F0 5.442(.O)C .442
(nly the)449.776 462 R F2(string)2.942 E F0 1.395(is required.)72 474 R 1.395
(If the optional brack)6.395 F 1.395(ets and)-.1 F F2(subscript)3.894 E F0
1.394(are included, that inde)3.894 F 3.894(xi)-.15 G 3.894(sa)388.714 474 S
1.394(ssigned to, otherwise the)400.938 474 R(inde)72 486 Q 3.656(xo)-.15 G
3.656(ft)102.726 486 S 1.156(he element assigned is the last inde)112.492 486 R
3.657(xa)-.15 G 1.157(ssigned to by the statement plus one.)272.917 486 R(Inde)
6.157 E 1.157(xing starts at)-.15 F 2.73(zero. The)72 498 R .23
(same syntax is accepted by)2.73 F F1(declar)2.73 E(e)-.18 E F0 5.229(.I)C(ndi)
269.159 498 Q .229(vidual array elements may be assigned to using the ksh)-.25
F F2(name)72 510 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0(.)A F1 2.5
(5.2. Dynamic)72 534 R(Loading)2.5 E F0 .348(On systems that support the)97
549.6 R F2(dlopen)2.848 E F0 .349(\(3\) library function, bash-2.0 will allo)B
2.849(wn)-.25 G .849 -.25(ew b)407.504 549.6 T .349(uiltins to be loaded).05 F
.049(into a running shell from a shared object \214le.)72 561.6 R .049(The ne)
5.049 F 2.549(wb)-.25 G .049(uiltins will ha)298.999 561.6 R .348 -.15(ve a)-.2
H .048(ccess to the rest of the shell f).15 F(acil-)-.1 E .649(ities, b)72
573.6 R .649(ut programmers will be subject to a fe)-.2 F 3.149(ws)-.25 G .649
(tructural rules.)269.591 573.6 R .65(This will be pro)5.65 F .65
(vided via a ne)-.15 F 3.15(wo)-.25 G .65(ption to)472.51 573.6 R F1(enable)72
585.6 Q F0(.)A F1 2.5(5.3. Builtins)72 609.6 R F0 .889(Some of the e)97 625.2 R
.889(xisting b)-.15 F .889(uiltins will change in bash-2.0.)-.2 F .888(As pre)
5.888 F .888(viously noted,)-.25 F F1(declar)3.388 E(e)-.18 E F0(,)A F1(export)
3.388 E F0(,)A F1 -.18(re)3.388 G(ad-).18 E(only)72 637.2 Q F0 2.873(,a)C(nd)
100.153 637.2 Q F1 -.18(re)2.873 G(ad).18 E F0 .373(will accept ne)2.873 F
2.873(wo)-.25 G .374(ptions to specify arrays.)206.288 637.2 R(The)5.374 E F1
(jobs)2.874 E F0 -.2(bu)2.874 G .374(iltin will be able to list only stopped).2
F .323(or running jobs.)72 649.2 R(The)5.322 E F1(enable)2.822 E F0 .322
(command will tak)2.822 F 2.822(ean)-.1 G -.25(ew)282.84 649.2 S F1<ad73>3.072
E F0 .322(option to restrict its actions to the POSIX.2)2.822 F F2(spe-)2.822 E
(cial)72 661.2 Q F0 -.2(bu)3.14 G(iltins.).2 E F1(Kill)5.64 E F0 .64
(will be able to list signal numbers corresponding to indi)3.14 F .64
(vidual signal names.)-.25 F .64(The read-)5.64 F .703(line library interf)72
673.2 R(ace,)-.1 E F1(bind)3.203 E F0 3.203(,w)C .703(ill ha)193.032 673.2 R
1.003 -.15(ve a)-.2 H 3.203(no).15 G .703(ption to remo)243.951 673.2 R 1.003
-.15(ve t)-.15 H .703(he binding for an).15 F 3.203(yk)-.15 G 1.002 -.15(ey s)
398.032 673.2 T .702(equence \(which is not).15 F
(the same as binding it to self-insert\).)72 685.2 Q .494(There will be tw)97
700.8 R 2.994(on)-.1 G .994 -.25(ew b)177.196 700.8 T .495
(uiltin commands in bash-2.0.).05 F(The)5.495 E F1(diso)2.995 E(wn)-.1 E F0
.495(command will remo)2.995 F .795 -.15(ve j)-.15 H .495(obs from).15 F(bash')
72 712.8 Q 3.445(si)-.55 G .945(nternal jobs table when job control is acti)
103.225 712.8 R -.15(ve)-.25 G 5.945(.A).15 G(diso)303.25 712.8 Q .944
(wned job will not be listed by the jobs com-)-.25 F .666(mand, nor will its e)
72 724.8 R .666(xit status be reported.)-.15 F(Diso)5.667 E .667
(wned jobs will not be sent a)-.25 F F1(SIGHUP)3.167 E F0 .667
(when an interacti)3.167 F -.15(ve)-.25 G EP
%%Page: 12 12
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(2-)288 48 S .688(shell e)72 84 R
3.187(xits. Most)-.15 F .687(of the shell')3.187 F 3.187(so)-.55 G .687
(ptional or)205.423 84 R/F1 10/Times-Italic@0 SF(to)3.187 E -.1(gg)-.1 G(led).1
E F0 .687(functionality will be folded into the ne)3.187 F(w)-.25 E/F2 10
/Times-Bold@0 SF(shopt)3.187 E F0 -.2(bu)3.187 G(iltin.).2 E(Man)72 96 Q 3.714
(yo)-.15 G 3.714(ft)103.894 96 S 1.214(he v)113.718 96 R 1.214
(ariables which alter the shell')-.25 F 3.714(sb)-.55 G(eha)266.282 96 Q 1.214
(vior when set \(re)-.2 F -.05(ga)-.15 G 1.214(rdless of their v).05 F 1.215
(alue\) will be made)-.25 F 6(options settable with)72 108 R F2(shopt)8.5 E F0
11(.E)C 6(xamples of such v)218.23 108 R 6(ariables include)-.25 F F2(allo)8.5
E(w_null_glob_expansion)-.1 E F0(,)A F2(glob_dot_\214lenames)72 120 Q F0 2.5
(,a)C(nd)163.67 120 Q F2(MAIL_W)2.5 E(ARNING)-1.2 E F0(.)A F2 2.5(5.4. V)72 144
R(ariables and V)-.92 E(ariable Expansion)-.92 E F0 .047
(Bash-2.0 will implement se)97 159.6 R -.15(ve)-.25 G .048(ral ne).15 F 2.548
(wv)-.25 G .048(ariable e)252.988 159.6 R 2.548(xpansions. These)-.15 F .048
(will answer se)2.548 F -.15(ve)-.25 G .048(ral of the most per).15 F(-)-.2 E
.213(sistant requests for ne)72 171.6 R 2.713(wf)-.25 G 2.713(eatures. It)
172.582 171.6 R .213(will be possible to `)2.713 F .212(`indirectly reference')
-.74 F 2.712('av)-.74 G .212(ariable with an e)398.534 171.6 R(xpansion,)-.15 E
(lik)72 183.6 Q 3.01(eu)-.1 G(sing)94.91 183.6 Q/F3 10/Courier@0 SF .51
(eval \\$${name})3.01 F F0 .51(to reference a v)3.01 F .51(ariable named by)
-.25 F F3(${name})3.01 E F0 5.51(.E)C .51(xpansions will be a)394.32 183.6 R
-.25(va)-.2 G(ilable).25 E .462(to retrie)72 195.6 R .762 -.15(ve s)-.25 H .462
(ubstrings of v).15 F .461(ariables in an)-.25 F F1(awk)2.961 E F0(-lik)A 2.961
(em)-.1 G .461(anner: starting at a speci\214c inde)277.692 195.6 R .461
(x, retrie)-.15 F .461(ving some num-)-.25 F .941
(ber of characters or the rest of the string.)72 207.6 R .941
(It will be possible to retrie)5.941 F 1.241 -.15(ve s)-.25 H .941
(equences of array elements lik).15 F(e)-.1 E .354(this, too.)72 219.6 R .354
(It w)5.354 F .354(ould be nice to ha)-.1 F .654 -.15(ve a w)-.2 H .354
(ay to replace portions of a v).05 F .353
(ariable matching a pattern the same w)-.25 F(ay)-.1 E(leading or trailing sub\
strings are presently stripped; that capability may be a)72 231.6 Q -.25(va)-.2
G(ilable.).25 E .453(Another ne)97 247.2 R 2.953(we)-.25 G .453
(xpansion will pro)156.376 247.2 R .453(vide a w)-.15 F .454
(ay to create strings containing arbitrary characters, which is)-.1 F(incon)72
259.2 Q -.15(ve)-.4 G 1.636(nient in the current v).15 F 4.136(ersion. W)-.15 F
1.635(ords of the form $')-.8 F F1(string)A F0 4.135('w)C 1.635(ill e)355.145
259.2 R 1.635(xpand to)-.15 F F1(string)4.135 E F0 1.635(with backslash-)4.135
F 1.231(escaped characters in)72 271.2 R F1(string)3.731 E F0 1.231
(replaced as speci\214ed by the ANSI C standard.)3.731 F 1.232
(As with other single-quoted)6.232 F
(shell strings, the only character that may not appear in)72 283.2 Q F1(string)
2.5 E F0(is a single quote.)2.5 E 1.436(The shell v)97 298.8 R 1.436
(ariables will change also.)-.25 F 3.936(An)6.436 G 1.936 -.25(ew va)272.052
298.8 T(riable).25 E F2(HISTIGNORE)3.936 E F0 1.435(will supersede)3.936 F F2
(HISTCON-)3.935 E(TR)72 310.8 Q(OL)-.3 E F0(.)A F2(HISTIGNORE)5.327 E F0 .327
(is the history analogy of)2.827 F F2(FIGNORE)2.828 E F0 2.828(:ac)C .328
(olon-separated list of patterns specifying)339.938 310.8 R 1.082
(commands to omit from the history list.)72 322.8 R 1.081
(The special pattern '&' will match the pre)6.081 F 1.081
(vious history line, to)-.25 F(pro)72 334.8 Q 1.568(vide the)-.15 F F2
(HISTCONTR)4.068 E(OL)-.3 E F1(ignor)4.068 E(edups)-.37 E F0(beha)5.734 E(vior)
-.2 E 6.568(.M)-.55 G(an)303.546 334.8 Q 4.069(yv)-.15 G 1.569
(ariables which modify the shell')326.655 334.8 R 4.069(sb)-.55 G(eha)474.21
334.8 Q(vior)-.2 E .395(will lose their special meaning.)72 346.8 R -1.11(Va)
5.395 G .395(riables such as)1.11 F F2(notify)2.895 E F0(and)2.895 E F2(noclob)
2.895 E(ber)-.1 E F0 .395(which pro)2.895 F .395(vide functionality a)-.15 F
-.25(va)-.2 G(il-).25 E .931
(able via other mechanisms will no longer be treated specially)72 358.8 R 5.931
(.O)-.65 G .931(ther v)340.06 358.8 R .932(ariables will be folded into)-.25 F
F2(shopt)3.432 E F0(.)A(The)72 370.8 Q F2(history_contr)5.519 E(ol)-.18 E F0
(and)5.519 E F2(hostname_completion_\214le)5.519 E F0 -.25(va)5.519 G 3.019
(riables, superseded by).25 F F2(HISTCONTR)5.518 E(OL)-.3 E F0(and)5.518 E F2
(HOSTFILE)72 382.8 Q F0(respecti)2.5 E -.15(ve)-.25 G(ly).15 E 2.5(,w)-.65 G
(ill be remo)185.12 382.8 Q -.15(ve)-.15 G(d.).15 E F2 2.5(5.5. Readline)72
406.8 R F0(Naturally)97 422.4 Q 2.94(,t)-.65 G .44(here will be impro)142.34
422.4 R -.15(ve)-.15 G .441(ments to readline as well.).15 F .441
(All of the POSIX.2)5.441 F F1(vi)2.941 E F0 .441(-mode editing com-)B .33
(mands will be implemented; missing commands lik)72 434.4 R 2.829(e`)-.1 G .329
(m' to sa)290.599 434.4 R .629 -.15(ve t)-.2 H .329
(he current cursor position \().15 F F1(mark)A F0 2.829(\)a)C .329(nd the)
478.951 434.4 R .36(`@' command for macro e)72 446.4 R .36(xpansion will be a)
-.15 F -.25(va)-.2 G 2.861(ilable. The).25 F .361
(ability to set the mark and e)2.861 F .361(xchange the current)-.15 F .764
(cursor position \()72 458.4 R F1(point)A F0 3.264(\)a)C .764
(nd mark will be added to the readline emacs mode as well.)170.672 458.4 R .763
(Since there are com-)5.764 F .196
(mands to set the mark, commands to manipulate the re)72 470.4 R .197
(gion \(the characters between the point and the mark\))-.15 F .111(will be a)
72 482.4 R -.25(va)-.2 G 2.611(ilable. Commands).25 F(ha)2.611 E .411 -.15
(ve b)-.2 H .11
(een added to the readline emacs mode for more complete ksh compati-).15 F
(bility)72 494.4 Q 2.5(,s)-.65 G(uch as the C-])101.36 494.4 Q F1(c)A F0
(character search command.)2.5 E F2 2.5(5.6. Con\214guration)72 518.4 R F0 .318
(Bash w)97 534 R .318
(as the \214rst GNU program to completely autocon\214gure.)-.1 F .319
(Its autocon\214guration mechanism pre-)5.319 F(dates)72 546 Q F1(autoconf)4.07
E F0 4.07(,t)C 1.569
(he current GNU con\214guration program, and needs updating.)140.97 546 R 1.569
(Bash-2.0 may include an)6.569 F .603
(autoconf-based con\214guration script, if necessary ne)72 558 R 3.103(wf)-.25
G .603(unctionality can be added to autoconf, or its limita-)294.476 558 R
(tions bypassed.)72 570 Q F2 2.5(5.7. Miscellaneous)72 594 R F0 1.632
(The POSIX mode will be impro)97 609.6 R -.15(ve)-.15 G 4.131(di).15 G 4.131
(nb)254.26 609.6 S 1.631(ash-2.0; it will pro)268.391 609.6 R 1.631
(vide a more complete superset of the)-.15 F(POSIX standard.)72 621.6 Q -.15
(Fo)5 G 2.5(rt).15 G(he \214rst time, bash will recognize the e)163.79 621.6 Q
(xistance of the POSIX.2)-.15 E F1(special)2.5 E F0 -.2(bu)2.5 G(iltins.).2 E
2.627(An)97 637.2 S .627 -.25(ew t)111.847 637.2 T .127(rap v).25 F(alue,)-.25
E F2(DEB)2.627 E(UG)-.1 E F0 2.627(,w)C .128(ill be present, as in ksh.)218.405
637.2 R .128(Commands speci\214ed with a)5.128 F F2(DEB)2.628 E(UG)-.1 E F0
.128(trap will)2.628 F 1.908(be e)72 649.2 R -.15(xe)-.15 G 1.908
(cuted after e).15 F -.15(ve)-.25 G 1.908(ry simple command.).15 F 1.908
(Since this mak)6.908 F 1.908(es shell script deb)-.1 F 1.908
(uggers possible, I hope to)-.2 F(include a bash deb)72 661.2 Q
(ugger in the bash-2.0 release.)-.2 E F2 2.5(6. A)72 685.2 R -.1(va)-1 G
(ilability).1 E F0 5.997(The current v)97 700.8 R 5.997(ersion of bash is a)
-.15 F -.25(va)-.2 G 5.998(ilable for anon).25 F 5.998
(ymous FTP from prep.ai.mit.edu as)-.15 F F1(/pub/gnu/bash-1.14.2.tar)72 712.8
Q(.gz)-1.11 E F0(.)1.666 E EP
%%Page: 13 13
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(3-)288 48 S/F1 10/Times-Bold@0
SF 2.5(7. Conclusion)72 84 R F0 .755(This paper has presented an o)97 99.6 R
-.15(ve)-.15 G(rvie).15 E 3.255(wo)-.25 G 3.255(fb)259.27 99.6 S .755
(ash, compared its features with those of other shells, and)270.855 99.6 R
(hinted at features in the ne)72 111.6 Q(xt release, bash-2.0.)-.15 E .483
(Bash is a solid replacement for sh.)97 127.2 R .483(It is suf)5.483 F .483
(\214ciently portable to run on nearly e)-.25 F -.15(ve)-.25 G .484(ry v).15 F
.484(ersion of)-.15 F/F2 9/Times-Roman@0 SF(UNIX)2.984 E F0 .514
(from 4.3 BSD to SVR4.2, and se)72 139.2 R -.15(ve)-.25 G(ral).15 E F2(UNIX)
3.013 E F0 -.1(wo)3.013 G(rkalik).1 E .513(es, and rob)-.1 F .513
(ust enough to replace sh on most of those)-.2 F .771(systems, It is v)72 151.2
R .771(ery close to POSIX.2-conformant in POSIX mode, and is getting f)-.15 F
(aster)-.1 E 5.771(.I)-.55 G 3.272(ti)436.684 151.2 S 3.272(sn)445.516 151.2 S
.772(ot, unfortu-)457.678 151.2 R(nately)72 163.2 Q 2.663(,g)-.65 G .163
(etting smaller)105.953 163.2 R 2.663(,b)-.4 G .163(ut there are man)170.399
163.2 R 2.663(yo)-.15 G .163(ptional features.)248.101 163.2 R .163(It is v)
5.163 F .162(ery easy to b)-.15 F .162(uild a small subset to use as)-.2 F 2.5
(ad)72 175.2 S(irect replacement for /bin/sh.)83.94 175.2 Q .909
(Bash has thousands of users w)97 190.8 R .909(orldwide, all of whom ha)-.1 F
1.209 -.15(ve h)-.2 H .91(elped to mak).15 F 3.41(ei)-.1 G 3.41(tb)409.34 190.8
S(etter)420.53 190.8 Q 5.91(.A)-.55 G .91(nother testa-)453.38 190.8 R
(ment to the bene\214ts of free softw)72 202.8 Q(are.)-.1 E F1 2.5(8. Refer)72
226.8 R(ences)-.18 E F0 .432([1] S. R. Bourne, `)72 242.4 R .432(`UNIX T)-.74 F
.432(ime-Sharing System:)-.35 F .431(The UNIX Shell')5.431 F(',)-.74 E/F3 10
/Times-Italic@0 SF .431(Bell System T)2.931 F(ec)-.92 E .431(hnical J)-.15 F
(ournal)-.25 E F0 2.931(,5)C(7\(6\),)484.84 242.4 Q
(July-August, 1978, pp. 1971-1990.)72 254.4 Q .736([2] Morris Bolsk)72 270 R
3.237(ya)-.15 G .737(nd Da)153.22 270 R .737(vid K)-.2 F(orn,)-.35 E F3 .737
(The K)3.237 F .737(ornShell Command and Pr)-.4 F -.1(og)-.45 G -.15(ra).1 G
.737(mming Langua).15 F -.1(ge)-.1 G F0 3.237(,P).1 G .737(rentice Hall,)
453.833 270 R(1989.)72 282 Q .142([3] Bill Jo)72 297.6 R 1.442 -.65(y, A)-.1 H
2.642(nI).65 G .141(ntroduction to the C Shell,)140.428 297.6 R F3 .141
(UNIX User')2.641 F 2.641(sS)-.4 G .141(upplementary Documents)309.346 297.6 R
F0 2.641(,U)C(ni)424.328 297.6 Q -.15(ve)-.25 G .141(rsity of Califor).15 F(-)
-.2 E(nia at Berk)72 309.6 Q(ele)-.1 E 1.3 -.65(y, 1)-.15 H(986.).65 E .283
([4] IEEE,)72 325.2 R F3 .283(IEEE Standar)2.783 F 2.783(df)-.37 G .283
(or Information T)179.692 325.2 R(ec)-.92 E(hnolo)-.15 E .283(gy -- P)-.1 F
.283(ortable Oper)-.8 F .283(ating System Interface \(POSIX\) P)-.15 F(art)-.8
E(2: Shell and Utilities)72 337.2 Q F0 2.5(,1)C(992.)165.06 337.2 Q F1 2.5
(9. A)72 361.2 R(uthor Inf)-.5 E(ormation)-.25 E F0 .937(Chet Rame)97 376.8 R
3.437(yi)-.15 G 3.437(sas)153.724 376.8 S(oftw)172.818 376.8 Q .936
(are engineer w)-.1 F .936(orking at Case W)-.1 F .936(estern Reserv)-.8 F
3.436(eU)-.15 G(ni)393.43 376.8 Q -.15(ve)-.25 G(rsity).15 E 5.936(.H)-.65 G
3.436(eh)443.036 376.8 S .936(as a B.S. in)455.912 376.8 R .072
(Computer Engineering and an M.S. in Computer Science, both from CWR)72 388.8 R
2.573(U. He)-.4 F .073(has been w)2.573 F .073(orking on bash)-.1 F
(for six years, and the primary maintainer for one.)72 400.8 Q EP
%%Trailer
end
%%EOF
